Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C命令行参数到int_C_Command Line Arguments - Fatal编程技术网

C命令行参数到int

C命令行参数到int,c,command-line-arguments,C,Command Line Arguments,由于argv[2]是2,它应该打印2次。您可以直接将argv[2]传递到myatoi()或使用变量: Hello, raju! Hello, raju! 您最好在使用argv之前添加输入检查,如: char *str = argv[2]; int val=myatoi(str); 您的myatoi()遇到了类似的问题,如atoi()标准函数——缺少检测和报告错误输入的能力。考虑一下,如果 ARVV(2)是“XYZ123”,例如:< p>您的函数 MyATOI >:您应该将返回语句从 <

由于
argv[2]
是2,它应该打印2次。

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

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

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

您的
myatoi()
遇到了类似的问题,如
atoi()
标准函数——缺少检测和报告错误输入的能力。考虑一下,如果<代码> ARVV(2)是“XYZ123”,例如:

< p>您的函数<代码> MyATOI >:您应该将<代码>返回<代码>语句从<<代码>中移动< <代码>循环> < /p> 以下是更正的版本:

if (argc != 3) {
   printf("Expected 2 args\n");
   exit(1);
} 
请注意,您的函数只处理专门由数字组成的字符串。不允许使用符号、空格和其他字符。您可以使用更灵活的标准函数,如
中声明的
atoi
strtol

以下是您的代码的简化版本:

int myatoi(const 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[]){
如果(argc==3){
int val=atoi(argv[2]);
对于(int j=0;j
Lookup如何将字符串解析为数字。int val=myatoi(argv[2])有什么问题?。。。检查
argc
值后,忽略了行
printf(“%d”,val)的
0
输出只需执行int val=atoi(argv[2]);我应该怎么做来检查错误的输入,比如xyz123@usrTanks,但我不应该为这个程序使用内置函数。还有其他方法吗,而不是我的代码@chqrlie@raju:如果无法使用库函数
atoi()
,请使用上面发布的修改后的
myatoi()
I。
int myatoi(const char *str) {
    int i, res = 0;
    for (i = 0; str[i] != '\0'; ++i) {
        res = res * 10 + str[i] - '0';
    }
    return res;
}
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc == 3) {
        int val = atoi(argv[2]);
        for (int j = 0; j < val; j++) {
            printf("Hello, %s\n", argv[1]);
        }
        return 0;
    } else {
        printf("error: 2 arguments expected\n");
        return 1;
    }
}