gpt4 book ai didi

arrays - 在 C 中读取命令行参数并检查它是一个数字

转载 作者:行者123 更新时间:2023-12-05 09:07:25 25 4
gpt4 key购买 nike

关于我的目标的详细信息

在 C 中,我的程序应该从命令行获取输入,读取它,确保它是一个数字,然后如果为真则打印“成功”,如果为假则打印“用法:./caesar key”。

预期结果

./caesar 33
Success

./caesar zzz
Usage: ./caesar key

实际结果

./caesar 33
Segmentation error

我尝试过的

 int main (int argc, string argv[])
{
if (argc == 2)
{
if (isdigit(argv[1]))
{
printf("Success\n");
return 0;
}

if (argc == 2)
{
if (isdigit(argv[0][1]))
{
printf("Success\n");
return 0;
}

int main (int argc, string argv[])
{
if (argc == 2 && isdigit(argv[1]))
{
printf("Success\n");
return 0;
}

最佳答案

你在这里做错的是你想检查整个字符串是否由数字组成,但是你将字符串本身传递给 isdigit,它需要一个 char。您可以做的是手动遍历 char 数组并检查每个 char 是否为数字,或者您可以使用 strspn 函数,如演示的那样下面。

strspn(argv[1], "0123456789") == strlen(argv[1])

这将比较参数中数字的跨度,如果它与字符串本身的长度相同则返回 true。如果你想在参数中允许 + 和 - 符号,请在 strspn 中使用 "-+0123456789",尽管对于 这样的情况会导致误报+++++(正如下面@dreamcrash 所提到的),这就是为什么定义自定义函数始终是更好的选择。 strspnstrlen 函数都在 string.h header 中可用。

关于arrays - 在 C 中读取命令行参数并检查它是一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64871422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com