2015-05-26 22 views
1

我有一個動態的.txt文件,名爲library.txt,它只有一行數據。正是這一個:fread() - 要讀取整數,但它正在返回垃圾

63Book Title1|Book Author 1|Book Editor 1|2014|English|255|99.989998| 

我試圖讀取該文件的第一個整數(在這種情況下,數字「63」)使用無效readInteger(),我創建功能:

void readInteger(){ 
FILE *arq = fopen("library.txt", "r+"); 
if(arq == NULL){ 
    printf("ERROR WHILE OPENING FILE!!!"); 
    return; 
} 

int x; 
fread(&x, sizeof(int), 1, arq); 
printf("%d", x); 
return; 
} 

但功能始終保持打印瘋狂的數字「1866609462」。
有人知道我的代碼有什麼問題嗎?你們能幫我嗎?

+0

該文件存儲爲ascii字符。不是整數。也就是說,它是一個文本文件而不是二進制文件。考慮使用'fscanf'來代替您的預期目的。或者'fgets'然後手動解析每一行(在這種情況下'strtok'是有幫助的)。 – kaylum

+0

'fread'不會做你認爲它做的事。 – immibis

回答

6

fread不適合用來讀取格式化數據。改爲使用fscanf

fscanf(arq, "%d", &x);