c - 处理文件中的多行时不记得的信息
问题描述
因此,假设一个文件有多行,每行包含一个单词。我想将每行中每个单词的字符存储在数组中。下面的代码显然不起作用,因为 -i 在每个循环中都归零,并且程序再次开始将字符存储在数组的第一个位置。代码是:
while(1)
{
if(fgets(str, 50, fp) == NULL)
break;
for(i=0; i<strlen(str); i++)
p[i] = str[i];
}
解决方案
像这样修复文件读取循环;
while (fgets(str, sizeof(yourString), fp) != NULL)
{
yourString[strlen(yourString) - 1] = '\0'; // delete the new line
printf("%s\n", yourString);
}
所以简单地在上面的代码中,你的while
循环将一直工作,直到文件中没有另一行可以读取。在每一轮while
循环中,它将从您的文件中取出一行,并将其添加到您的yourString
char 数组中。请注意,文件中的每一行fgets()
也会使用换行符 ( \n
),因此我们需要在添加另一行之前从数组中删除这些字符。
在while
循环之前,您需要声明一个char
数组来存储其中的每一行,例如;
char yourString[stringSize];
您需要stringSize
为您的阵列确定一个以使其有足够的存储空间来存储您的文件。
推荐阅读
- javascript - 使用 Chrome 扩展重定向请求而不影响视觉地址
- python - 从变量中提取 gzip 文件的方法
- r - 无法在一个图中制作多个图在ggplot2中
- laravel - 无法使用 Laravel 中的关系获取特定属性值
- excel - VBA Range.Offset 问题
- reactjs - Youtube Data API v3 403 错误:发出一个请求时超出配额
- parsing - 解析 ansible playbook 输出
- reactjs - OIDC客户端JS认证授权使用react应用
- html - 由引导程序组成的导航栏元素,活动状态不起作用
- azure - Azure 容器中来自 dockerhub 的图像的凭据问题