如何将文件(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 中的每一行保存到不同的文件中