2014-05-17 64 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())的返回值,以確保一切順利OK

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);'自從不使用大腦以來,人們一直在複製粘貼。另外,您可以像訪問另一個一樣訪問該數組:'ptr2 [n]'訪問從'0'索引的第n個元素。 –