对不起,我的问题,我知道有很多相似之处,但我没有找到任何简单的足以帮助我的东西。
我已经开始用 C 编写代码并尝试解决一个简单的练习:从命令行读取一个整数数组,使用函数 array_sum 对元素求和并打印结果。 (输入 3 个元素的示例数组:3 0 1 2)
int array_sum(int *array, size_t size);
int main(int argc, char **argv){
int sum=array_sum(argv, argc);
printf("array_sum: %i\n", sum);
return 0;
}
我的问题是 argv 是一个字符数组,而函数需要一个整数数组。 我应该在一个新的 int 数组中一个一个地转换元素吗?有更好的方法吗?
最佳答案
argv
是指向 C 字符串的指针数组。您需要先将字符串转换为整数。你可以这样做:
int array_sum(int *array, size_t size);
int main(int argc, char **argv){
int *num_arr = malloc((argc - 1) * sizeof *num_arr);
for (int i = 0; i < argc - 1; ++i)
num_arr[i] = atoi(argv[i+1]);
int sum = array_sum(num_arr, argc - 1);
printf("array_sum: %i\n", sum);
free(num_arr);
return 0;
}
使 main
中的代码更短的唯一方法是将转换循环移动到一个单独的函数中,该函数返回 malloc
ed 指针。
关于c - 如何将命令行参数读取为整数而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42186565/