#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/