sscanf的工作

Sun*_*mar 0 c scanf

有一个很大的字符串.我想在不同的变量中存储不同的部分.但似乎我的理解不清楚或存在错误.请帮忙.

这是我的代码部分.

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);
Run Code Online (Sandbox Code Playgroud)

产量

在上面的例子中显示了一些值为j = 1的垃圾值.

我该如何解决这个问题?

Joh*_*ger 6

scanf()系列函数要求传递指针到扫描领域应存放的位置.这只是在你扫描到一个char数组(字段描述符%s)时才有效,因为char数组的名称会自动转换为指针,但对于其他类型的字段,你需要使用address-of operator(&).

另外,正如iharob首次观察到的那样,%s描述符期望字段由空格分隔.您可以通过%[]描述符获得所需内容:

j=sscanf(sample,"%[^,],%[^,],%d,%f,%d",name,speciality,&pos,&batavg,&runs);
Run Code Online (Sandbox Code Playgroud)