C Ошибки (Начинающий) - PullRequest
3 голосов
/ 04 марта 2009
#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 ]

9 голосов
/ 04 марта 2009

FILE и NULL написаны неправильно (C чувствителен к регистру). В строке fopen пропущена точка с запятой.

Код ниже компилируется и запускается.

#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 );
    }
}
3 голосов
/ 04 марта 2009

Следующее работает нормально и было очищено с помощью согласованных скобок и пробелов в вызовах функций, определениях и циклах / 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 голосов
/ 04 марта 2009

В дополнение к другим уже указанным функциям 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;
  }
}
2 голосов
/ 04 марта 2009

Попробуйте использовать заглавные буквы FILE.

1 голос
/ 04 марта 2009

Тип файла определен в stdio.h и должен иметь заглавные буквы (FILE). Простая ошибка, чтобы сделать.

1 голос
/ 04 марта 2009
  • Файл должен начинаться с заглавной буквы в начале строки 4
  • в конце строки 4 отсутствует точка с запятой, что приводит к проблеме разбора в строке 5

ИЗМЕНЕНО дважды, потому что я ошибся при редактировании. упс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...