sscanf的浮动用c [英] sscanf to float using c

查看:158
本文介绍了sscanf的浮动用c的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有一个具有多个字符串的文件。我应该使用与fgets 阅读每一行,然后使用的sscanf 来打破串起来,并将其加工成我的结构。下面是一个例子。

  38L利,胜者; 2.8

首先是ID,第二个是名字,最后的GPA。当我尝试使用sscanf会读取GPA,它的阅读0.0,而不是2.8。这里是我的code。

 布尔getstu(FILE * fpstu,STU * pstu)
{//局部定义
    INT ioResult;
    炭温度[100];
    字符* PTR;
    焦炭tempStr [50];//声明
    与fgets(温度,sizeof的(临时),fpstu);
    {
        PTR =温度;
        sscanf的(PTR,%3S,pstu-> ID);
        PTR + = strlen的(pstu-和SEQ ID)+1;
        sscanf的(PTR,%[^;],tempStr);        pstu->名称= aloName(tempStr);        PTR + = strlen的(tempStr)+ 2;
        sscanf的(PTR,%S,tempStr);
        sscanf的(tempStr,%3.1F,pstu-> GPA);
    }返回ioResult == 1;
} // getstu

能否给我一个人解释什么,我做错了,我怎么能解决这个问题?


解决方案

 的sscanf(tempStr,%3.1F,pstu-> GPA);

 的sscanf(tempStr,%3.1F,及(pstu-> GPA));

,我想。

So I have a file that has multiple strings. I'm supposed to use fgets to read each line then use sscanf to break the string up and process them into my struct. Here's an example.

38L Lee, Victor; 2.8

The first is the id, second is name, and finally the gpa. When I try using sscanf to read the gpa, it's reading 0.0, rather than 2.8. Here's my code.

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

Can someone explain to me what I'm doing wrong and how I can fix this problem?

解决方案

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

should be

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

, I think.

这篇关于sscanf的浮动用c的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆