C错误(初学者)

时间:2009-03-04 06:31:45

标签: c

#include <stdio.h>

main(void) {
file *file = fopen("words.txt","r") 
if(file != null) {
    char line[128];
    while(fgets( line, sizeof line, file) != null) 
    {
    fputs ( line, stdout );
    }
    fclose ( file );
    }
}

这是我的代码。即时尝试读取文件,并输出内容。 但这给了我错误代码

main.c: In function 'main':
main.c:4: error: 'file' undeclared (first use in this function)
main.c:4: error: (Each undeclared identifier is reported only once
main.c:4: error: for each function it appears in.)
main.c:5: error: parse error before "if"
main.c:7: error: 'line' undeclared (first use in this function)
main.c:7: error: 'null' undeclared (first use in this function)
main.c: At top level:
main.c:13: error: parse error before '}' token
main.c:13:2 warning: no newline at end of file

我该如何解决这个错误。

6 个答案:

答案 0 :(得分:9)

错误地写入了FILE和NULL(C区分大小写)。 fopen line缺少分号。

以下代码编译并运行。

#include <stdio.h>

main(void) {
FILE *file = fopen("words.txt","r"); 
if(file != NULL) {
    char line[128];
    while(fgets( line, sizeof line, file) != NULL) 
    {
    fputs ( line, stdout );
    }
    fclose ( file );
    }
}

答案 1 :(得分:3)

以下工作正常,并且在函数调用和定义以及循环/ ifs中使用一致的大括号和空格进行了清理。它也适用于C,如果这是你的标签意图,并打印错误,如果无法打开文件则返回1.

#include <stdio.h>
#include <errno.h>

int main (void) {
    char line[128];
    FILE *file = fopen ("words.txt", "r");
    if (file != NULL) {
        while (fgets (line, sizeof line, file) != NULL) {
            fputs (line, stdout);
        }
        fclose (file);
    } else {
        fprintf (stderr, "Cannot open 'words.txt', error = %d\n", errno);
        return 1;
    }
    return 0;
}

答案 2 :(得分:2)

尝试大写FILE

答案 3 :(得分:2)

除了已经指出的其他内容之外,您的main()函数应该被指定为返回int,并且最后应该明确地这样做。另外,我不太了解你的缩进和包围风格。

#include <stdio.h>

int main(void)
{
  FILE *file = fopen("words.txt","r"); 
  if(file != NULL)
  {
    char line[128];
    while(fgets( line, sizeof line, file) != NULL) 
    {
      fputs ( line, stdout );
    }
    fclose ( file );
  }
  return 0;
}

或者,如果文件没有打开,你可以使它return 1;(UNIX上的错误代码通常不为零):

#include <stdio.h>

int main(void)
{
  FILE *file = fopen("words.txt","r"); 
  if(file != NULL)
  {
    char line[128];
    while(fgets( line, sizeof line, file) != NULL) 
    {
      fputs ( line, stdout );
    }
    fclose ( file );
    return 0;
  }
  else
  {
    return 1;
  }
}

答案 4 :(得分:1)

  • 文件应在第4行的开头大写。
  • 第4行的结尾缺少分号,导致第5行的解析问题

编辑两次,因为编辑错了。糟糕。

答案 5 :(得分:1)

文件类型在stdio.h中定义,必须是全大写(FILE)。简单的错误。