我想从给定的输入文件中逐行读取,处理每一行(即它的单词)然后移动到另一行...
所以我正在使用 fscanf(fptr,"%s",words) 来读取单词,一旦遇到行尾它应该停止......
但这在 fscanf 中是不可能的,我想...所以请告诉我该怎么做...
我应该阅读给定行中的所有单词(即应该遇到行尾)以终止然后移动到另一行,并重复相同的过程..
最佳答案
使用fgets() .是的,链接是 cplusplus,但它源自 c stdio.h
。
您也可以使用 sscanf()
从字符串中读取单词,或者只是使用 strtok()
来分隔它们。
回应评论: fgets()
的这种行为(在字符串中保留 \n
)允许您确定实际遇到行尾。请注意,如果提供的缓冲区不够大,fgets()
也可能只从文件中读取部分行。在你的情况下 - 最后检查 \n
并删除它,如果你不需要它。像这样:
// actually you'll get str contents from fgets()
char str[MAX_LEN] = "hello there\n";
size_t len = strlen(str);
if (len && str[len-1] == '\n') {
str[len-1] = 0;
}
就这么简单。
关于c - 关于C编程的文件处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/739589/