2016-03-24 4 views
-4

Я умеренно новичок в C и C++ и имею ошибку в моем коде, на который я не могу найти ответ, потому что, когда я нахожу, что один ответ больше решает на поверхность. Это мой код:Id возвращен 1 статус выхода - чтение файла

#include <stdio.h> /* required for file operations */ 
FILE *file; 

int main(void) 
{ 
    double content; 
    char *mode = "rt"; 
    int x = 1; 
    const char *line(); 
    int lineInt = 1; 
    const char *y; 
    double data[1000]; 
    int i; 
    double filename; 

    if(x = 1) 
    { 
     scanf("%s", filename); 
     file = fopen(&filename, mode); 
     if (file == NULL) 
     { 
      fprintf(stderr, "Can't open input file!\n"); 
      exit(1); 
     } 
     while (fgets (&line, 1000, file) != NULL); 
     { 
     lineInt == line; 
     scanf(&line, "string", &data[lineInt]); 
     line == line + 1; 
     } 
     fclose(file); /* close the file prior to exiting the routine */ 
     for(i=1; i < line; i++); 
     { 
      printf("&d", data[i]); 
     } 
     fprint(); 
    } 
    return 0; 
} 

Я получаю сообщение об ошибке «Id return 1 status status». Я просмотрел множество источников в Интернете, но до сих пор не могу найти ответ, пожалуйста, помогите.

+1

Не могли бы вы поделиться общим сообщением об ошибке? Это было бы очень полезно. – idmean

+2

'double filename;' вы не можете ввести строку в эту переменную. Попробуйте 'char filename [100];' например. –

+1

'const char * line();' неверно. Попробуйте 'char line [1000];' –

ответ

1

Существует много ошибок. Я приведу список (см. Также комментарии):

double filename; неправ. Использовать char filename[256];

const char *line(); неправ. Использовать char line[1000];

if (x=1) Отдает 1 до x. Используйте if (x==1)

while (fgets (&line, 1000, file) != NULL) 
    { 
     lineInt == line; 
     scanf(&line, "string", &data[lineInt]); 
     line == line + 1; 
    } 
    fclose(file); /* close the file prior to exiting the routine */ 

используется line для двух Diferent целей: для чтения из stdin с scanf и читать из файла с fgets. И удалите ;, как говорит WeatherVane. И вызов scanf - это мусор. Прочтите руководство!

for(i=1; i < line; i++); индексы массивов начинаются с 0, а не 1.

printf("&d"... неправильно. Используйте "%d".

fprint(); без параметров неверно. Вероятно, ваша программа сбой.

Так что о каждой строке вашего кода есть некоторая ошибка. Пожалуйста, прочитайте книгу о C. И включите все предупреждения во время компиляции. Вы получите много.