所以我有一个包含多个字符串的文件。我应该使用fgets
来读取每一行,然后使用sscanf
来打破字符串并将它们处理到我的结构中。这是一个例子。
38L Lee, Victor; 2.8
第一个是id,第二个是名字,最后是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
有人可以向我解释我做错了什么以及如何解决这个问题?
答案 0 :(得分:3)
sscanf(tempStr, "%3.1f", pstu->gpa);
应该是
sscanf(tempStr, "%3.1f", &(pstu->gpa));
,我想。