我有一个函数,它被设计成从一个输入文件中读取多个字符串,这样我可以稍后再调用它们。编码如下:

int load_mpn_search(char search_filename[], int size, char search_array[][5])
{
int search_size = 0;
int n = 0;
FILE * infile;
int i = 0;


infile = fopen(search_filename, "r");

if(infile==NULL)
{
    printf("\nUnable to open %s\n", search_filename);
}

else
{
printf("\n\nDuring Scan:");
    while(fscanf(infile, "%s\n", search_array[n]) != EOF)
            {
                printf("\n%d  %s",n, search_array[n]);
                n++;
            }

            search_size = n;
}
fclose(infile);

这将从输入文件中正确地拉入所有字符串,并将它们存储在数组中。我使用打印功能来显示正在存储的内容,我得到的是:
During Scan:
0  2-1-0
1  1-0-2
2  1-3-5
3  1-10
4  3-3-0
5  5-1-0
6  5-1-0-1
7  5-2-1

但是,在同一个程序中,我尝试将它们打印回来,以查看使用以下命令存储的内容:
printf("\n\nIn Function:");


for(i = 0; i < search_size; i++)
{
    printf("\ni = %d", i);
     printf("\t search_array[%d] = %s", i, search_array[i]);
}

我得到的是:
In Function:
i = 0    search_array[0] = 2-1-01-0-21-3-51-10
i = 1    search_array[1] = 1-0-21-3-51-10
i = 2    search_array[2] = 1-3-51-10
i = 3    search_array[3] = 1-10
i = 4    search_array[4] = 3-3-05-1-05-1-05-2-1
i = 5    search_array[5] = 5-1-05-1-05-2-1
i = 6    search_array[6] = 5-1-05-2-1
i = 7    search_array[7] = 5-2-1

每个字符串应该只有5个字符长,除了i=6(7个字符长)之外,程序似乎是将它们组合成一个看似随机的集合,并在文件中重复以填充数组中的所有字符串。如有任何帮助,将不胜感激。谢谢!

最佳答案

弦长不够

int load_mpn_search(char search_filename[], int size, char search_array[][5]);

增大尺寸
int load_mpn_search(char search_filename[], int size, char search_array[][128]);

注意,您还需要为“\0”提供空间。

关于c - 字符串数组正确扫描,然后一起运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47059823/

10-13 08:54
查看更多