如何从 c (Ubuntu) 中的文件中逐行读取?

杰克

我正在尝试从文件中逐行提取字符串,但它没有给我任何输出。该文件在令牌中包含一些单词。这是我的代码:

#include<stdio.h>
#include<string.h>
main(void)
{
    FILE *open;
    open = fopen("assembly.txt", "r");
    FILE *write;
    write = fopen("tokens.txt", "w");
    FILE *a;

    char ch;
    char *str;

    while ((ch = fgetc(open)) != EOF)
    {
        if (ch == 32 || ch == ',' || ch == '#')
            fprintf(write, "\n");

        else
            fprintf(write, "%c", ch);
    }

    a = fopen("tokens.txt", "r");

    while (!feof(a))
    {
        if (fgets(str, 126, a))
            printf("%s", str);
    }
}

我根本没有输出。程序成功执行,没有任何输出!

加布里埃尔·德格里穆阿德(Gabriel de Grimouard)

您的代码中有几个错误。第一:你没有关闭文件。第二:您使用尚未分配的 str 执行了 fgets,这将导致段错误。

通过修复,现在您的代码是:

#include<stdio.h>
#include<string.h>
int main(void)
{
    FILE *open;
    open = fopen("assembly.txt", "r");
    FILE *write;
    write = fopen("tokens.txt", "w");
    FILE *a;

    char ch;
    char str[127];

    while ((ch = fgetc(open)) != EOF)
    {
        if (ch == 32 || ch == ',' || ch == '#')
            fprintf(write, "\n");

        else
            fprintf(write, "%c", ch);
    }    

    fclose(write);
    fclose(open);
    a = fopen("tokens.txt", "r");

    while (!feof(a))
    {
        if (fgets(str, 126, a))
            printf("%s", str);
    }
    fclose(a);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章