繁体   English   中英

用scanf查找C中的字符串和数字

[英]scanf for string and number in C

我一直在尝试使用scanf()读取字符串和整数。 它工作正常,但是我无法检查输入是否正确。

char command[6];
int cmd_num;

scanf("%5s %d", command, &cmd_num);

对于读取正确的输入,它工作正常,我可以通过strcmp检查字符串是否正确 我试图通过isdigit()函数检查数字,但是由于空格,我无法正确检查数字,但是我不确定它是如何工作的。

我尝试用Google搜索它,我玩过[^ \\ n],但仍然不起作用。 任何人都可以启发我scanf的工作原理吗?

我认为解决方案是,如果我能确切告诉scanf读什么-> string(space)integer。 是否可以使用正则表达式或任何其他方式来获取它?

我基本上需要的是scanf读取该行以识别字符串,然后检查其后是否也有数字。

另一个问题是,只要用户提供输入,我就需要读取输入,我尝试将getchar用于while循环,只要char不是'\\ n',就重复一次,但这会在开始,但是如果我给它提供EOF条件,即使有多个换行符,它也永远不会结束。 我想它也可能受scanf的限制,但是我不确定到底是怎么回事,这个论坛上的线程无法给我答案。

这不会进行:

while ( ( c = getchar() ) != '\n')
{
 //code
}

无论换行符如何,都将继续进行:

while ( (c = getchar() ) != EOF )
{
 //code
}

您无需检查数字是否为数字,而isdigit()用于检查ascii值是否为09之间的数字。

要检查scanf()成功并且输入正确,因此cmd_num的值正确,并且是从输入中读取的整数,您必须检查scanf()的返回值。

它返回匹配格式说明符的数量。 你有两个

if (scanf("%5s%d", command, &cmd_num) == 2) // this means it's correct
//                          ^ your code is missing the address of operator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM