有一个大字符串。我想将它的不同部分存储在不同的变量中。不过好像不是我的理解不清楚,就是有bug。请帮忙。
这是我的代码部分。
char sample[] = "abc,batsman,2,28.0,1800";
char name[10] ,speciality[10];
float batavg;
int pos, runs,j;
j = sscanf(sample,"%s,%s,%d,%f,%d", name, speciality, pos, batavg, runs);
printf("%s,%s,%d,%f,%d", name, speciality, pos, batavg, runs);
printf("\n%d\n",j);
输出
显示了上述情况下j = 1 的一些垃圾值。
我该如何解决?
最佳答案
scanf()
函数系列要求您将指针 传递到应存储扫描字段的位置。这只适用于扫描到 char
数组(字段描述符 %s
),因为 char
数组的名称被转换为自动指针,但对于其他类型的字段,您需要使用寻址运算符 (&
)。
此外,正如 iharob 最初观察到的,%s
描述符期望字段由空格分隔。你可以通过 %[]
描述符得到你想要的:
j=sscanf(sample,"%[^,],%[^,],%d,%f,%d",name,speciality,&pos,&batavg,&runs);
关于c - sscanf 的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721752/