有没有办法从文件中读取用Enter键分隔的字符串?

时间:2019-08-21 04:28:56

标签: c

我是一名新程序员,并且我学习了一些C。

问题是,我得到一个文件,其单词由回车键分隔,例如:

Apple
Banana
Cinnamon

我想将所有这些数据存储在一个变量(一个字符串(字符数组))中,但是我认为fgets()函数在找到回车键时就会停止。

所以我想知道是否还有另一种方法

char* readFile(void){ // 

    FILE *text;
    text = fopen("text1.txt", "r");  

    char *words;

    words = malloc (sizeof(char)*10); 

    fgets(words, 2000, text); 

    fclose(text); 

    printf("%s\n", words); // Just to see the output

    return words;

}

当我读取包含以下内容的文件时:

Apple
Banana
Cinnamon

输出为:

Apple

1 个答案:

答案 0 :(得分:1)

fgets用于读取文件中的行。根据手册页:

  

fgets()从流中读取最多小于大小的字符,并将其存储到s指向的缓冲区中。在EOF或换行符之后停止读取。如果读取换行符,则将其存储到缓冲区中。终止空字节('\ 0')存储在缓冲区中的最后一个字符之后。

如果要获取原始数据,请使用fread。该函数的手册页将其描述为:

  

fread()函数从stream指向的流中读取nmemb数据项,每个数据项的长度为字节,将它们存储在ptr给定的位置。

另一种选择是每行只调用fgets 3次,那么输入将被拆分。

哪种方法取决于您要对数据进行什么处理。