我使用C語言編程,我試圖讀取每一行的第一個字符串中的二進制文件。從二進制文件中讀取不成功用C
二進制文件數據的實例(我已經寫了一個txt文件,以顯示你)
Iliya Iliya Vaitzman 16.00以色列1 0 1
我想讀第一個伊利亞在該行(或者該行的第一個詞將是什麼)。
我想下面的代碼,但它一直返回NULL的字符串變量我給他
下面的代碼:
FILE* ptrMyFile;
char usernameRecieved[31];
boolean isExist = FALSE;
ptrMyFile = fopen(USERS_CRED_FILENAME, "a+b");
if (ptrMyFile)
{
while (!feof(ptrMyFile) && !isExist)
{
fread(usernameRecieved, 1, 1, ptrMyFile);
if (!strcmp(userName, usernameRecieved))
{
isExist = TRUE;
}
}
}
else
{
printf("An error has encountered, Please try again\n");
}
return isExist;
我用的typedef和#定義一個布爾變量(0假的,一切是真(TRUE是真的,假的就是假))
usernameRecieved保持從FREAD越來越NULL。
我應該怎麼才能解決這個問題呢?
你知道,你只是在FREAD讀取一個字節()? –
二進制文件的格式是什麼?你不能只用'freed()'從一個二進制文件中讀取一個C字符串,除非'\ 0'終止,並且你知道確切的位置和長度。 'userName'沒有被定義。 –
您的文件讀取邏輯錯誤。只有當_already嘗試讀取file_結尾時,'feof()'函數才返回非零值。這意味着,在成功讀取文件中的最後一條記錄後,'feof()'返回false,然後執行另一個'fread()'並繼續使用結果。 FREAD的'的返回值()'爲已讀取對象的數量,所以正確的做法是要始終測試FREAD()'的'的返回值,如果該值是零或其他「錯誤」,_then_你檢查'feof()'並決定是否退出循環。 (另請參閱'ferror()'。) –