我使用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()'。) –