sscanf函数

sscanf定义在stdio.h中。

sscanf函数原型:

int sscanf( const char *str, const char *format, &para,…);

sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内,函数运行成功返回参数个数,否则返回0。

注意:
1.sscanf从字符串str第一个不为空格的数读起,直到空格结束,并将读取的字符串按照format的要求转换成相应的数据类型
例如:

void main()
{
 char a1[100]="   123456 554445 66666";
 char c[100];
 int count=sscanf(a1,"%s",&c);
 cout<<c<<endl<<count<<endl;
} 

输出结果为:
123456
1

2.多个参数的情况下,字符串str中的不同参数之间应以空格隔开,且与format、para的依次对应;否则只能正确输出第一个参数

void main()
{
 int i; 
 char input[ ]="10  aaaaaaaa bbbbbbbb"; 
 char s[50]; 
 sscanf(input,"%d%s ",&i,s); 
 cout<<i<<endl<<s;
}

输出结果:
10
aaaaaaaa

对比:

void main()
{
 int i,j; 
 char input[ ]="10 11"; 
 char s[50]; 
 int a=sscanf(input,"%d%d ",&i,&j); 
 cout<<i<<endl<<j<<endl<<a;
}

输出:
10
11
2

void main()
{
 int i,j; 
 char input[ ]="1011"; 
 char s[50]; 
 int a=sscanf(input,"%d%d ",&i,&j); 
 cout<<i<<endl<<j<<endl<<a;
}

输出:
1011
-858993460
1

附:
错误:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

第一次使用到sscanf所属的stdio.h时,出现以下错误

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

提示说明在转换到COFF文件因为错误失败了(VS2010装好了,一般是不会有[file invalid] 错的)。

  而完成转换工作的是cvtres.exe这个程序。出现上面错误的根本原因是系统中存在有多个版本的 cvtres.exe。

  系统目录下版本:C:/Windows/Microsoft.NET/Framework/v4.0.30319/cvtres.exe

  VS目录下版本: C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN/cvtres.exe

  如果是64位系统,那么还有个在 C:/Windows/Microsoft.NET/Framework64/v4.0.30319/cvtres.exe

  不过Framework 和Framework64下俩个版本是一致的,而且由于系统更新,一般比VS目录下的版本新。
到此解决方法也就明显简单了,只需要将旧版的重命名或者删除,不过我一般习惯重命名,比如在后面加上 -old。

还有点要说的,就是在找系统目录下的cvtres.exe程序的时候,有个名字叫 cvtres.exe的XML文件(博主没有显示文件扩展名 )。所有大家找的时候记得别找错了啊。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值