2013-11-18 4 views
0

Я читаю данные из файла и записываю его в массив. Это работает, но я, похоже, не могу правильно его прочитать. Где ошибка?Почему я не могу прочитать свои данные из массива?

int main(){ 

    struct mountain{ 
     char name[300]; 
     char height[5]; 
    }; 

    struct mountain mountainArray[8]; 

    fp = fopen("berge.txt", "r"); 

    if(fp == NULL) { 
     perror("Error opening file"); 
     return(-1); 
    } 

    int i=0; 
    while (fgets(readLine, buflen, fp)){ 
     if(i<8){ 

      char * p; 

      p = strtok (readLine,":"); 
      if (p != NULL){ 

       strcpy(mountainArray[i].name,p); 
       p = strtok (NULL, ":"); 
       if (p != NULL) 
        strcpy(mountainArray[i].height,p); 
      } 

      i++; 

     } 
    } 

    unsigned int f; 
    for (f=0; f<8; f++){ 

     printf("%s\n", mountainArray[i].name); 
    } 
    fclose(fp); 

    return 0; 
} 

ответ

2

в строке

printf("%c\n", mountainArray[i].name); 

Я думаю, что вы имеете в виду f для индекса, а не i.

(и Ивайло правильно. - Вы хотите %s строк)

+0

Это сделало это как смущающе! –

+1

Обращайтесь с условиями ошибки, а также в программе @HansEn, используя значение параметра NULL для членов структуры, иначе в цикле он будет печатать нежелательные сообщения для остальных членов. – vishram0709

0

Вы должны напечатать строку, используя %s спецификатор формата не %c.

+0

Да. Это печатает меня по каждой строке. Если я отлаживаю, я вижу, что массив заполнен данными. Я просто не могу его прочитать. –

Смежные вопросы