sscanf使用c浮动

时间:2013-03-19 02:10:27

标签: c floating-point floating-point-conversion

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

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

1 个答案:

答案 0 :(得分:3)

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

应该是

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

,我想。