C中的文件读取错误

时间:2015-04-21 14:32:01

标签: c file

此代码不读取全文文件。名称,首先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;

}

2 个答案:

答案 0 :(得分:1)

有一些可疑的东西:

  1. 在依赖它之前检查文件打开是否失败。
  2. 不要那样使用feof(),它不是它的用途,它不会起作用。
  3. 你只保留25个字符的空间,这个字符不会很长(你的最长字似乎是14个字符,所以它 应该没问题。)
  4. 您应该检查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