C-从文本文件中的每一行读取特定数量的单词

标签 c file-io

我只想读取文件中每行的前五个字符(包括空格)。意思是,在指针到达某一行的第 5 个字符后,我希望指针重置到下一行的开头,并继续这样做,直到到达 EOF。

例如,如果我想读取文件中每一行的前 5 个字符,则结果应如下:

Hello World --->  Hello
blah blah   --->  blah 
Goodbye     --->  Goodb

我尝试通过实现 fgets 来实现此目的,但是我不知道如何在读取 5 个字符后重置指针:

while (feof(inputFile) == 0) {
    fgets(str, 6, inputFile); 

发生的情况是,fgets 在第 5 个字符处停止,但它没有转到下一行,而是继续读取同一行的接下来 5 个字符。

有没有办法让 fgets 在读入 5 个字符后从下一行开始?任何不实现 fgets 的替代方法也是可以接受的。

最佳答案

试试这个

void trimFile(const char *inputFile, const char *outputFile, int length) {
    FILE *fin, *fout;
    fin  = fopen(inputFile, "r");
    fout = fopen(outputFile, "w");
    char str[length + 1];
    while (fgets(str, sizeof str, fin)){
        char *p = strchr(str, '\n');
        if(p){
            fputs(str, fout);
        } else {
            int ch;
            while((ch=fgetc(fin))!='\n' && ch != EOF)
                ;
            fprintf(fout, "%s\n", str);
        }
    }
    fclose(fin);
    fclose(fout);
}

关于C-从文本文件中的每一行读取特定数量的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27428159/

相关文章:

c - 如何在c编程中从long转换为float时获得两位小数

c - 数组是常量数据类型吗

c# - 将结构内的整数指针编码为回调

ruby - 从 ruby​​ 中的单段中的标准输入或文件读取

macos - 当 "Operation not permitted"和 `sudo` 不起作用时,如何在 macOS 上避免 `bypass`

c - 如何从文本文件中读取最小/最大变量?

java - 如何使用java从文本文件中删除一行?

c - 当我尝试在其他线程中调用 GtkWidget 对象时,GTK 应用程序崩溃

c - GLUT 窗口重叠后不刷新

Python将二进制图像(PNG)数据写入文件