C拆分包含整数的char字符串

时间:2016-03-19 15:05:11

标签: c string

我试图将一个字符串拆分为3个int,char,int类型的变量。我有以下字符串来拆分1000P3。我有以下代码来执行此操作,但char变量包含P3而不仅仅是P.

int num1;
char type [10];
int num2 =0;
sscanf("1000P3","%d %c %d",&num1,type,&num2);

任何帮助都会感激不尽。

2 个答案:

答案 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);
                     ^           ^