c - 关于C编程的文件处理问题

标签 c filehandle

我想从给定的输入文件中逐行读取,处理每一行(即它的单词)然后移动到另一行...

所以我正在使用 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/

相关文章:

perl - 如何写入存储在数组中的 Perl 文件句柄?

c++ - 使用 C++ 修复 .txt 文件中的列宽

unix - 在一个进程中关闭所有打开的文件

c++ - 编译cpp文件时代码不并行,c是并行的

c - gtk显示修改后的图像

java - 在 Java(TM) 平台 SE 二进制文件中打开

perl - 如何从作为数组元素的 Perl 文件句柄中读取数据?

c - 在 C 中读入结构数组时只打印 txt 文件的最后一行

c - 使用c模拟x86 32位汇编运行

c - 尽管有足够的可用内存,但堆栈溢出