从argv读取数字输入数据并存储到C中的int数组中

时间:2016-01-12 20:06:19

标签: c arrays integer arguments argv

如何从程序参数中读取数字三元组到一个整数数组然后显示它们?那就是我输入./read 1,2,3 4,5,6 7,8,9而ouptput应该是

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

1 个答案:

答案 0 :(得分:2)

  1. 这里有错误

    x[j] = atoi(&(a[j]));
    

    你不应该像那样传递地址,只是

    x[j] = atoi(a[j]);
    

    应该有用。

  2. 您必须包含 stdlib.h

  3. 您必须在NULL后查看strtok()。或者通过@ this comment正确关注BLUEPIXY

      

    x[j] = atoi(a[j]);然后a[++j] = strtok(NULL, ",");

  4. 启用编译器警告应该让你自己找到它。