int 的 C 命令行参数

标签 c command-line-arguments

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

int myatoi(char *str) {
    int i, res = 0;
    for (i = 0; str[i] != '\0'; ++i) {
        res = res * 10 + str[i] - '0';
        return res;
    }
}

int main(int argc, char *argv[]) {
    int j;
    char str[] = " i want to get argv[2] value here";
    int val = myatoi(str);
    printf("%d", val);
    if (argc == 3) {
        for (j = 0; j < val; j++) {
            printf("Hello, %s \n", argv[1]);
        }
    } else
    if (argc < 3) {
        printf("Not Enough Arguments\n");
    } else
    if (argc > 3) {
        printf("Too Many Arguments\n");
    }
    return 0;
}

如何将 argv[2] 的值传递给 char str[],以便它将字符串转换为 int 并打印输出。

argv[0] 是文件名,argv[1] 是字符串,argv[2] 应该是 整数

示例输出:./hello raju 2

Hello, raju!
Hello, raju!

因为 argv[2] 是 2 它应该打印 2 次。

最佳答案

您可以直接将 argv[2] 传递给 myatoi() 或使用变量:

 char *str = argv[2];
 int val=myatoi(str);

您最好在 之前 使用 argv 添加输入检查,例如:

if (argc != 3) {
   printf("Expected 2 args\n");
   exit(1);
} 

您的 myatoi() 遇到与 atoi() 标准函数类似的问题——缺乏检测和报告错误输入的能力。例如,考虑如果 argv[2] 是“xyz123”会发生什么。

关于int 的 C 命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045405/

相关文章:

c - 如何进行 Windows 句柄继承

c++ - 跨平台一致的伪随机数

windows - cmd.exe 命令行中必须转义哪些符号?

C 中的 cmd 参数转换为 char**

c - 打印数组值,无地址

将莫尔斯字符串转换为字符数组

c - GCC 编译器优化选项

python - 使用 argparse 解析命令行参数

c++ - 在 C++ 中解析命令行参数?

c - MSVS 命令行参数