此代码不读取全文文件。名称,首先30-40不读取该单词。为什么?
字源:http://www.cs.hmc.edu/~geoff/classes/hmc.cs070.200009/homework10/simple.dict
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = fopen("simple.txt","r");
char buf[25];
while (!feof(fp))
{
fscanf(fp,"%s",buf);
printf(" %s\n ", buf);
}
fclose(fp);
return 0;
}
答案 0 :(得分:1)
有一些可疑的东西:
feof()
,它不是它的用途,它不会起作用。25
个字符的空间,这个字符不会很长(你的最长字似乎是14个字符,所以它 应该没问题。)fscanf()
的返回值(事实上,可以用来替换feof()
)。答案 1 :(得分:0)
您可以像这样打开文件和逐行读取文件上下文
int main()
{
/* Used variables */
FILE *file;
char *line = NULL;
size_t len = 0;
ssize_t read;
/* Open file descriptor */
file = fopen("simple.txt", "r");
if(file != NULL)
{
/* Line-by-line read file */
while ((read = getline(&line, &len, file)) != -1)
{
/* Print line */
printf("%s\n", line);
}
/* Close file descriptor and free line */
fclose(file);
if (line) free(line);
}
else printf("Can not open file\n");
return 0;
}
当文件中没有更多行时, getline()
返回-1