2014-10-16 3 views
0

Я посмотрел на [Read list of numbers in txt file and store to array in C], чтобы выяснить, как прочитать файл ints в массиве.C: Значение мусора, прочитанное в массиве ints

#include <stdlib.h> 
#include <stdio.h> 

int second_array[100], third_array[100]; 

int main(int argc, char *argv[]) 
{ 
    int first_array[100]; 
    FILE *fp; 

    fp = fopen("/home/ldap/brt2356/435/meeting_times.txt", "r"); 

    /* Read first line of file into array */ 
    int i = 0; 
    int num; 
    while(fscanf(fp, "%d", &num) == 1) { 
     first_array[i] = num; 
     i++; 
    } 

    /* Print contents of array */ 
    int j = 0; 
    while(first_array[j] != '\0') { 
     printf("%d", first_array[j]); 
     j++; 
    } 
    printf("\n"); 

    fclose(fp); 

    return(0); 
} 

файл выглядит следующим образом:

5 3 2 4 1 5 
2 2 4 
7 9 13 17 6 5 4 3 

начинает печать массива правильно, за исключением того, в самом конце есть значение мусора. Пример вывода выглядит следующим образом:

5324152247913176543-1216514780 

Где находится -1216514780 стоимость мусора?

+1

Ваше условие прерывания в контуре печати неверно. Он должен быть 'while (j ooga

ответ

2

Массив не имеет нулевого символа, \0 в конце. К счастью, у вас есть переменная, которая отслеживает размер массива - i. Ваш второй цикл while должен иметь условие, которое выглядит следующим образом:

while(j<i) 
+0

Это работает, спасибо. Предположим, что я просто хочу прочитать в первой строке файла массив. Я бы использовал fgets для этого? – BrianRT

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