2

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

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

4

1 回答 1

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

应该

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

, 我认为。

于 2013-03-19T02:30:10.037 回答