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;
}
}