首页 > 解决方案 > 我怎样才能只得到一个数字作为主函数的参数?

问题描述

我对 isdigit() 有疑问。对于一个练习,我只需要将一个数值传递给 main 函数。这意味着我不能通过“3 4 5”也不能通过“你好”。我的代码可以正常使用这些示例,但它不能使用值“2x”,即使它使用值“x2”也是如此。

这是代码:

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>


int main (int argc, string argv[])
{
    if ((argc == 2) && isdigit(*argv[1]))
    {
        printf("%s \n", argv[1]);
        printf("%i \n", argc);
    }
    else
    {
        printf("You have to use only one numeric value \n");
    }
}  

我试图改变if ((argc == 2) && isdigit(*argv[1]))if ((argc == 2) && isdigit(argv[1])),但我不断得到Segmentation fault

请你帮助我好吗?非常感谢!

标签: cfunctioncs50

解决方案


isdigit(int character)只检查一个值。您可以看到,因为您必须*argv[1]传递argv. 的第一个字符2x2让你的程序按预期运行。

您可以做的是获取输入的长度,strlen(argv[1])然后使用循环检查字符串中的所有字符是否都是数字。然而,这仅适用于十进制整数。


推荐阅读