如何将文件(IN C)中的每一行保存在变量中? :)

Posted

技术标签:

【中文标题】如何将文件(IN C)中的每一行保存在变量中? :)【英文标题】:How to save every line in file (IN C) in a variable? :) 【发布时间】:2015-11-18 11:49:09 【问题描述】:

我需要将 c 中的每一行文本文件保存在一个变量中。 这是我的代码

int main()

    char firstname[100];
    char lastname[100];
    char string_0[256];
    char string[256] = "Vanilla Twilight";
    char string2[256];

    FILE *file;
    file = fopen("record.txt","r");

    while(fgets(string_0,256,file) != NULL) 
    

        fgets(string2, 256, file);
        printf("%s\n", string2);


        if(strcmp(string, string2)==0)
            printf("A match has been found");
    

    fclose(file);
    return 0;

有些行存储在变量中并打印在 cmd 上,但有些行被跳过。

我该怎么办?当我尝试 sscanf() 时,所有行都是完整的,但只打印每行的第一个单词。我也试过 ffscanf() 但也没有工作。在 fgets() 中,每行的单词都是完整的,但正如我所说,有些行被跳过(甚至是第一行)。 我只是编程的初学者,所以我真的需要帮助。 :(

【问题讨论】:

P.S.我需要将它存储在一个变量中,因为我仍然与它有关。 :) 您正在跳过第一行,因为您没有使用string_0 的内容。你只是在丢弃它。 【参考方案1】:

您每隔奇数行就跳过检查,因为您有两个连续的fgets() 调用,只有一个strcmp()。将您的代码缩减为

while(fgets(string_0,256,file) != NULL) 
        
        if( ! strcmp(string_0, string2) )
            printf("A match has been found\n");
    

FWIW,fgets() 读取并存储尾随换行符,这可能会导致字符串比较问题,您也需要注意这一点。

请注意,在使用返回的指针之前,您应该始终检查fopen() 的返回值是否成功。

【讨论】:

另外,如果该行的长度超过 256 个字符,也会读取该行的剩余部分。 谢谢你。我真的很感激:D。我终于让它工作了,我需要将每一行保存在 *words_per_line[100] 中。但问题是每次运行while循环时只保存文件的最后一行。我按照您的更正并刚刚添加了 words_per_line[i]= 第 i 行。对不起,如果我打扰你,我真的需要将它存储在一个字符串数组中。 :')

以上是关于如何将文件(IN C)中的每一行保存在变量中? :)的主要内容,如果未能解决你的问题,请参考以下文章

将 Spark Dataframe 中的每一行保存到不同的文件中

从 RichTextBox 中的每一行获取文本?

如何使用for循环将文本文件中的一行字符串作为Bash中另一个脚本的单独变量传递[重复]

如何将源文件名添加到 Spark 中的每一行?

对于文件中的每一行,同步执行命令并保存到另一个文件的换行符

如何在SSIS中的每一行中生成具有不同数据类型的固定宽度文件