首页 > 解决方案 > 处理文件中的多行时不记得的信息

问题描述

因此,假设一个文件有多行,每行包含一个单词。我想将每行中每个单词的字符存储在数组中。下面的代码显然不起作用,因为 -i 在每个循环中都归零,并且程序再次开始将字符存储在数组的第一个位置。代码是:

while(1)
{
    if(fgets(str, 50, fp) == NULL)
        break;
    for(i=0; i<strlen(str); i++)
        p[i] = str[i];
}

标签: c

解决方案


像这样修复文件读取循环;

 while (fgets(str, sizeof(yourString), fp) != NULL)
  {
    yourString[strlen(yourString) - 1] = '\0'; // delete the new line
    printf("%s\n", yourString);
  }

所以简单地在上面的代码中,你的while循环将一直工作,直到文件中没有另一行可以读取。在每一轮while循环中,它将从您的文件中取出一行,并将其添加到您的yourStringchar 数组中。请注意,文件中的每一行fgets()也会使用换行符 ( \n),因此我们需要在添加另一行之前从数组中删除这些字符。

while循环之前,您需要声明一个char数组来存储其中的每一行,例如;

char yourString[stringSize];

您需要stringSize为您的阵列确定一个以使其有足够的存储空间来存储您的文件。


推荐阅读