sscanf定义在stdio.h中。
sscanf函数原型:
int sscanf( const char *str, const char *format, ¶,…);
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文件(博主没有显示文件扩展名 )。所有大家找的时候记得别找错了啊。