我试图将一个字符串拆分为3个int,char,int类型的变量。我有以下字符串来拆分1000P3。我有以下代码来执行此操作,但char变量包含P3而不仅仅是P.
int num1;
char type [10];
int num2 =0;
sscanf("1000P3","%d %c %d",&num1,type,&num2);
任何帮助都会感激不尽。
答案 0 :(得分:2)
%c
读取单个字符,而不是字符串。你看到3只是未定义行为的巧合。尝试
int num1;
char type;
int num2;
sscanf("1000P3","%d %c %d", &num1, &type, &num2);
请记住使用%c
打印字符。
另外,您应该检查sscanf
的返回值;如果它不是3(因为我们想解析3个项目),那么你的输入是不正确的。
答案 1 :(得分:2)
一个以null结尾的char数组是一个字符串,它的名字恰好是一个指向地址的指针。 所以你可以使用:
char type[10];
你会用:
sscanf("1000P3","%d %s %d",&num1,type,&num2);
^ ^
单个char的处理方式与int相同。要读取其值,请使用&
运算符传递地址变量
所以用
char type;
你会用:
sscanf("1000P3","%d %c %d",&num1,&type,&num2);
^ ^