我有這段代碼從文件中讀取整數。 我使用相同的代碼從另一個文件 讀取雙打,並完美地工作,但這次循環是 變得無限。可能是什麼?我正在閱讀的文件 是由程序編寫的,可以嗎?我不知道 這是什麼意思,但我的操作系統說這個文件是 二進制。那麼,任何幫助將不勝感激。謝謝。在C中讀取文件
i=1;
cadeia = malloc (i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
while (!feof(arq_cadeia)){ /*Fazendo leitura e alocação de memória da matriz de transição*/
fscanf (arq_cadeia , "%d" , (cadeia+i-1));
i++;
cadeia = realloc (cadeia , i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
printf("%d\n", *(cadeia+i-1));
}
您需要檢查'fscanf'的結果並確保它等於1. – 2012-07-10 15:38:26
關於'while(!feof(arq_cadeia))',請注意,'feof'只會變爲true _after_您嘗試讀取文件結尾。在循環中,檢查'fscanf'的返回值,如果遇到無效輸入,則保留在流中,並且所有後續掃描都失敗。 – 2012-07-10 15:38:55
這裏與你的問題無關,但你應該考慮以更大的增量分配你的緩衝區,預分配一個塊,如果你需要更多的話,然後在塊中做一個realloc。 – pstrjds 2012-07-10 15:39:13