c - 字符串数组正确扫描,然后一起运行

标签 c arrays string

我有一个函数,旨在从输入文件中读取多个字符串,以便稍后调用它们。即编码如下:

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/

相关文章:

c# - Entity Framework 查询中 string.Trim() 的行为

arrays - 如何在 Swift 中找到数组的最高元素?

c++ - IVssBackupComponents::InitializeForBackup 失败

c - 从应用程序 makefile 运行库 makefile

c - 打印内容后如何从链表中删除节点?

javascript - 如何将对象放入另一个对象 Angular/Javascript

c - 二维数组出现错误 : subscripted value is neither array nor pointer nor vector

c++ - 拆分并从字符串转换为字符数组

java - 如何高效地将 String 序列化到现有的 ByteBuffer 中?

c - 用户空间进程抢占内核线程?