c - argv 读取 C 中不相关的字符

标签 c argv

我正在学习 C 编程。我的程序读取了与我提供的无关的数字。有什么帮助吗?我哪里不见了?

#include <stdio.h>

main(int argc, char argv[])
{
    int i,sum, digit;
if(argc == 1)
{
    printf("\n No arguments specified");
    return 0;
}
for(i=1;i<argc;i++)
    {
    digit = argv[i];
    printf("Argument is: %d", digit);
    //sum += argv[i];
    }
printf("The sum of all numbers is: %d", sum);
return 0;
}

子布

最佳答案

你的 main() 是错误的。应该是:

int main(int argc, char *argv[])
                        ^
                        |
                    IMPORTANT!

因为参数 vector 是一个字符串指针数组,而不是一个字符数组。

然后,您将参数无效地转换为整数,您需要调用例如strtol()sscanf() 来执行此操作。这种转换是必要的,因为参数作为字符串数组传递给您的程序,并且字符串 "42"(例如)在 C 中与数字 42.

请注意,我提到的两个转换函数都可以检测它们是否失败;例如,如果用户为您的程序提供非数字参数,重要的是要检测到这一点,而不是继续将它们视为数字。

关于c - argv 读取 C 中不相关的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815357/

相关文章:

复制带有指向复制文件的符号链接(symbolic link)的目录(在目录树中)

从指针强制转换为不同大小的整数,并且赋值使指针中的整数无需强制转换

c - 从 C 中的字符串中提取两个整数

c - 链接库时未定义对全局数组的引用

c - argv 指向指针数组的指针

c++ - 看不懂这段代码?这是关于在 C++ 中读取文件

PHP如何获取精确的argv(当前命令的精确参数)?

c - 从 C 中的 telnet 套接字读取

c - 接受非 ASCII 字符

C argv 数据的最大大小是多少