C:来自用户的未知输入

C:来自用户的未知输入,c,input,scanf,C,Input,Scanf,我希望从C中的用户处获得输入。有两个选项: char然后int(scanf(“%c,%d”,&mychar,&myint)) 或字符串 我的问题是,如果我不知道用户要输入什么-字符串或char/int组合,如何检查用户输入行。谢谢 输入带有fgets的字符串,然后在其上尝试sscanf,并检查结果是否成功/失败。如果您得到2,则表示您已成功读取一个字符和一个整数。如果您得到任何其他信息,sscanf无法读取您指定的格式,请使用原始字符串 您甚至可以读取格式%c,%d%c”(别忘了给它一个char

我希望从C中的用户处获得输入。有两个选项:
char
然后
int
scanf(“%c,%d”,&mychar,&myint)
) 或
字符串


我的问题是,如果我不知道用户要输入什么-字符串或char/int组合,如何检查用户输入行。谢谢

输入带有
fgets
的字符串,然后在其上尝试
sscanf
,并检查结果是否成功/失败。如果您得到
2
,则表示您已成功读取一个字符和一个整数。如果您得到任何其他信息,
sscanf
无法读取您指定的格式,请使用原始字符串


您甚至可以读取格式
%c,%d%c”
(别忘了给它一个char变量来读取第三个参数),以便查看字符和整数是否都存在,以便进行严格的错误检查:
“x,18trashtrash”
将使
sscanf
返回
3
,而一个漂亮的
“x,18”
将为您提供
2

输入带有
fgets
的字符串,然后在其上尝试
sscanf
,并检查结果是否成功/失败。如果您得到
2
,则表示您已成功读取一个字符和一个整数。如果您得到任何其他信息,
sscanf
无法读取您指定的格式,请使用原始字符串


您甚至可以读取格式
%c,%d%c”
(别忘了给它一个char变量来读取第三个参数),以便查看字符和整数是否都存在,以便进行严格的错误检查:
“x,18trashtrash”
将使
sscanf
返回
3
,而一个漂亮的
“x,18”
会给你
2

但是如果是“c,c”,我不也会得到2吗?在我的情况下,我没有a,所以如果我读取“%c%d%c”,任何字符串输入都会得到2,不是吗?否,因为
sscanf
将拒绝使用
%d
读取第二个
c
;所以你会得到
1
(为了正确阅读
%c
),但是如果是“c,c”,我不也会得到2吗?在我的情况下,我没有a,所以如果我读取“%c%d%c”,任何字符串输入都会得到2,不是吗?否,因为
sscanf
将拒绝使用
%d
读取第二个
c
;因此,您得到
1
(为了正确阅读
%c
)是否真的有一个逗号
作为第二个输入字符?是否真的有一个逗号
作为第二个输入字符?