所以我有一个包含多个字符串的文件。我应该用来fgets
读取每一行,然后sscanf
用来分解字符串并将它们处理到我的结构中。这是一个例子。
38L Lee, Victor; 2.8
第一个是 id,第二个是 name,最后是 gpa。当我尝试使用 sscanf 读取 gpa 时,它读取的是 0.0,而不是 2.8。这是我的代码。
bool getstu (FILE* fpstu, STU* pstu)
{
// Local Definitions
int ioResult;
char temp[100];
char *ptr;
char tempStr[50];
// Statements
fgets(temp, sizeof(temp), fpstu);
{
ptr = temp;
sscanf(ptr, "%3s", pstu->id);
ptr += strlen(pstu->id) + 1;
sscanf(ptr, "%[^;]", tempStr);
pstu->name = aloName(tempStr);
ptr += strlen(tempStr) + 2;
sscanf(ptr, "%s", tempStr);
sscanf(tempStr, "%3.1f", pstu->gpa);
}
return ioResult == 1;
}// getstu
有人可以向我解释我做错了什么以及如何解决这个问题吗?