如何将程序参数中的数字三元组读入整数数组,然后显示它们?那就是我输入 ./read 1,2,3 4,5,6 7,8,9
并且输出应该是
1 2 3
4 5 6
7 8 9
我的代码只适用于字符串,但不适用于整数
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
int d[argc][3];
int x[3];
for(i = 1; i < argc; i ++){
char *a[3];
int j = 0;
a[j] = strtok(argv[i], ",");
while(a[j] != NULL){
a[++j] = strtok(NULL, ",");
x[j] = atoi(&(a[j]));
}
printf("%s %s %s \n", a[0], a[1], a[2]);
printf("%d %d %d \n", x[0], x[1], x[2]);
}
return 0;
}
它在每一行显示 1 0 0
。
最佳答案
这里有错误
x[j] = atoi(&(a[j]));
你不应该那样传递地址,只是
x[j] = atoi(a[j]);
应该可以。
您必须包括stdlib.h
您必须在
strtok()
之后检查NULL
。或者按照 this comment 正确地做通过 @ BLUEPIXY .x[j] = atoi(a[j]);
thena[++j] = strtok(NULL, ",");
启用编译器警告应该让您自己找到它。
关于c - 从 argv 中读取数字输入数据并存储到 C 中的 int 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752825/