我做了很多简单的程序,但我只想char word[30]
从文本文件的每一行读取第一个单词.
我试过了,但没有成功.哦,每次我阅读它都要重用那个char.(每次我阅读时都要列出一个有序列表).
任何人都可以通过一种简单而"清晰"的方式向我展示一种从文件中读取这种方式的方法吗?
FILE *fp;
char word[30];
fp = fopen("/myhome/Desktop/tp0_test.txt", "r");
if (fp == NULL) {
printf("Erro ao abrir ficheiro!\n");
} else {
while (!feof(fp)) {
fscanf(fp,"%*[^\n]%s",word);//not working very well...
printf("word read is: %s\n", word);
strcpy(word,""); //is this correct?
}
}
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
例如,对于包含以下内容的文件:
word1 word5
word2 kkk
word3 1322
word4 synsfsdfs
Run Code Online (Sandbox Code Playgroud)
它只打印这个:
word read is: word2
word read is: word3
word read is: word4
word read is:
Run Code Online (Sandbox Code Playgroud)
pmg*_*pmg 10
只需在格式字符串中交换转换规范即可
// fscanf(fp,"%*[^\n]%s",word);//not working very well...
fscanf(fp,"%s%*[^\n]",word);
Run Code Online (Sandbox Code Playgroud)
读取第一个单词并忽略其余单词,而不是忽略该行并读取第一个单词.
编辑一些解释
%s忽略空格,因此如果输入缓冲区有"四十二",则scanf忽略第一个空格,将"四十"复制到目标,并将缓冲区放在"二"之前的空格处
%*[^ \n]忽略换行符之外的所有内容,不包括换行符.因此,包含"one \n two"的缓冲区在scanf之后位于换行符处(就像它是"\n two")