2014-05-17 3 views
-1
#include <stdio.h> 
#include <stdlib.h> 


int main() 
    { 

    FILE *buildingsptr; 
    int ptr2[8]; 


    buildingsptr=fopen("buildings.txt","r"); 

    fscanf(buildingsptr, "%d", &ptr2); 
    printf("%d", ptr2); 


getch(); 
return 0; 
} 

У меня есть более крупный код, и я обнаружил, что эта часть вызывает проблему. В файле «buildings.txt» есть целые числа в нем, например 24 или 7, я просто хочу напечатать первый номер текста, но этот код дает мне номер 2293296, я новичок в кодировании, поэтому я не мог Решите мою проблему, буду благодарен, если вы мне поможете. :)Использование fscanf с массивом

ответ

1

ptr2 - это массив. Вы хотите получать (и печати) один из его элементов

fscanf(buildingsptr, "%d", &ptr2[2]); // fetch into the element with index 2 
printf("%d", ptr2[2]); // print the value of the element with index 2 

Но вы действительно должны проверить возвращаемое значение fscanf() (и ранее fopen()), чтобы убедиться, что все прошло нормально

if (fscanf(buildingsptr, "%d", &ptr2[2]) != 1) { 
    // there was an error 
} else { 
    printf("%d", ptr2[2]); 
} 

Не Забудьте также fclose().

+0

Большое вам спасибо, я решил. Но у меня есть другой вопрос, если у вас есть время ответить, я буду использовать malloc вместо массива, я получаю эти целые числа из файла .txt, я отправляю эти числа указателю, который реализуется malloc, а затем я хочу получить доступ той части памяти, которая выделяется malloc. Я помню что-то, что я могу использовать указатель, который имеет главный адрес части памяти, как массив. Например, 'ptr2 = (int *) malloc (a * sizeof (int))'; затем 'fscanf (buildingsptr,"% d ", ptr2)'; как я могу напечатать свои номера на экране? Я попробовал цикл «for», как ptr [i], и я потерпел неудачу. – user3648312

+0

печатать с 'printf ("% d \ n ", * ptr2);' – pmg

+0

@ user3648312 начинать с не литья malloc: 'ptr2 = malloc (a * sizeof * ptr2);' Приведение происходит с 30 лет назад, с тех пор люди не скопировали их, не применяя мозг. Кроме того, вы получаете доступ к этому массиву так же, как и к другому: 'ptr2 [n]' для доступа к элементу 'n'-th, индексированному с' 0'. –

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