C++请教sscanf函数的使用。

double iC1,iC2,iC3;
sscanf( str , "%s %d %d %d " , name, &iC1, &iC2, &iC3 );
sscanf中查找“,”空格”“,或者空格”这三种情况应该怎么改,
输出的double型用什么表示

字符串输入格式 ,
逗号分隔 用 "%[^,], 格式。
逗号空白分隔 用 "%[^,' ']%*c:
sscanf(str,"%[^,' ']%*c%lf,%lf,%lf",name,&iC1,&iC2,&iC3);

空白分隔 用 %s %lf %lf %lf 格式

#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[]="wang,3,4,5";
char name[10];
double iC1,iC2,iC3;
sscanf(str,"%[^,],%lf,%lf,%lf",name,&iC1,&iC2,&iC3);
printf("%s %lf %lf %lf\n",name,iC1,iC2,iC3);
return 0;
}

输出double型,可以用%lf 格式。追问

谢谢你的回答,我明白了,%lf把iC2以“不知道几进制”的格式读入进去,输出再用&lf。
我用 outfile << name <<"," << iC1 <<"," << iC2 <<"," <<iC3<<"\n" ;写入到文件中都是不认识的东西,请问,默认的是什么格式。我要是用他进行计算的话是不是要转换一下。

追答

输入 %lf 是 double 型。10进制。无论定点格式,e 格式,。。
outfile << 默认是 定点格式或e 格式,宽12位。

温馨提示:内容为网友见解,仅供参考
无其他回答

C++请教sscanf函数的使用。
字符串输入格式 ,逗号分隔 用 "%[^,], 格式。逗号空白分隔 用 "%[^,' ']%*c:sscanf(str,"%[^,' ']%*c%lf,%lf,%lf",name,&iC1,&iC2,&iC3);空白分隔 用 %s %lf %lf %lf 格式 include <iostream> using namespace std;include <stdio.h> include <stdlib.h> int main()...

c++中sscanf函数与sprintf函数的用法
1、基本用法,取字符串 string source0 = "1234456"; char str[521]; sscanf(source0.c_str(),"%s",str); sscanf(source0.c_str(),"%4s",str);2、转换为整型数 string source0 = "123456"; int x; sscanf(source0.c_str(),"%d",&x); sscanf(source0.c...

C++,16进制转化问题,字符串转化成数字
{ char szValue[] = "01f0";int nValude = 0;sscanf(szValue,"%x",&nValude);printf("%d\\n",nValude);return 0;} 主要用到sscanf这个库函数:函数名: sscanf 功 能: 执行从字符串中的格式化输入 用 法: int sscanf(char *string, char *format[,argument,...])...

C++里面有没有直接把c 16进制转10进制函数的函数
sscanf(szValue,"%x",&nValude);printf("%d\\n",nValude);return 0;} \/*输出:17 \/ 主要用到sscanf这个库函数:函数名: sscanf 功 能: 执行从字符串中的格式化输入 用 法: int sscanf(char *string, char *format[,argument,...]); \/\/%x就是我们要格式化的类型,即输出十六进制 方法...

C\/C++编程笔记:如何将C ++字符串转换为数字?三种方法教给你
首先,您可以使用字符串流类或sscanf()函数来完成字符串到数字的转换。通过这种方法,您能从字符串中重建数字。另一种方法是使用to_string()函数,它接受一个数字(可以是任何数据类型)并以所需字符串形式返回该数字。借助此函数,您可轻松实现数字与字符串之间的转换。第三种方法是借助Boost库中的...

c++中字符串数组转化成int型数组
转换时,可以使用sscanf函数来实现。代码如下:void convert_string_to_int(string *s, int *a, int len){ int i; for(i = 0; i < len; i ++) sscanf(s[i].c_str(), "%d", a+i);\/\/将string中的第i个元素,按照%d(整型)的格式转换成整型数据,并存到a的第i个元素中。

c++中如何将浮点数转换为字符串
c++中将浮点数转换为字符串,可以使用ssanf函数,如下:include <stdio.h>int main(){ char str[]="3.1414"; float ff; sscanf(str,"f",&ff); printf("%f\\n",ff); return 0;}

C++用SSCANF函数提取出现的问题
&x2,s3,&y2);以逗号为分格符,跳过一个字符串用:sscanf(str,"%*[^','],%lf, %lf,%*[^','],%lf,%*[^','],%lf",&x,&y,&x2,&y2);=== 注意,跳过用 %*[^','] ,后面无 s1 。。。读 用 %[^','] , 后面有 s1 。。。其它问题也解决了。

C\/C++完成两个日期之间相隔天数的计算
return (toSecond-fromSecond)\/24\/3600; } 这个函数最为重要的就是使用sscanf命令完成字符串中数字部分的获取。一旦获取到年月日再代入函数convert就可计算出秒值,最后将两个秒值相减再除以一天的秒数即可得到结果。完整的程序: #includestdio.h #includestdlib.h #includestring.h #includemath.h #...

C++用SSCANF函数提取出现的问题
&x2,s3,&y2);以逗号为分格符,跳过一个字符串用:sscanf(str,"%*[^','],%lf, %lf,%*[^','],%lf,%*[^','],%lf",&x,&y,&x2,&y2);=== 注意,跳过用 %*[^','] ,后面无 s1 。。。读 用 %[^','] , 后面有 s1 。。。其它问题也解决了。

相似回答