用于读取格式化输入的scanf()

用于读取格式化输入的scanf(),c,scanf,C,Scanf,我试图找到问题的答案。我试过了 此代码使用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 我只打印字符串s1,但它包含整个字符串。 为什么不通过将输入分成3个字符串来读取输入?不,scanf()不知道应该在逗

我试图找到问题的答案。我试过了 此代码使用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
我只打印字符串
s1
,但它包含整个字符串。
为什么不通过将输入分成3个字符串来读取输入?

不,
scanf()
不知道应该在逗号处停止第一个字符串转换,因为字符串可以包含逗号

可以使用
%[]
转换说明符执行此操作,使用
%[^,]
包含除逗号以外的所有字符

abc,def,ghi