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