2

だから私は複数の文字列を持つファイルを持っています。fgets各行を読み取りsscanf、文字列を分割して構造体に処理するために使用することになっています。これが例です。

38L Lee, Victor; 2.8

1 番目は ID、2 番目は名前、最後は gpa です。sscanf を使用して gpa を読み取ろうとすると、2.8 ではなく 0.0 と表示されます。これが私のコードです。

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 に答える