有一个很大的字符串.我想在不同的变量中存储不同的部分.但似乎我的理解不清楚或存在错误.请帮忙.
这是我的代码部分.
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的垃圾值.
我该如何解决这个问题?
该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)