sscanf使用c浮动

所以我有一个包含多个字符串的文件。 我应该使用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 

有人可以向我解释我做错了什么以及如何解决这个问题?

 sscanf(tempStr, "%3.1f", pstu->gpa); 

应该

 sscanf(tempStr, "%3.1f", &(pstu->gpa)); 

, 我认为。