我正在尝试解决this问题。我试过了 这段代码用gcc作为编译器,输出不是预期的。
#include <stdio.h>
int main(void)
{
char s1[10],s2[10],s3[10];
scanf("%s,%s,%s ",s1,s2,s3);
printf("%s\n",s1);
}
输入
abc,def,ghi
输出
abc,def,ghi
我只打印字符串s1
,但它有整个字符串
为什么不通过将输入分成3个字符串来scanf()
以这种方式读取输入?
答案 0 :(得分:2)
不,scanf()
不知道它应该以逗号停止第一个字符串转换,因为字符串可以包含逗号。
您可以使用%[]
转化说明符执行此操作,使用%[^,]
包含逗号以外的所有字符。