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

标签 c arrays integer arguments argv

如何将程序参数中的数字三元组读入整数数组,然后显示它们?那就是我输入 ./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

最佳答案

  1. 这里有错误

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

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

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

    应该可以。

  2. 您必须包括stdlib.h

  3. 您必须在 strtok() 之后检查 NULL。或者按照 this comment 正确地做通过 @ BLUEPIXY .

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

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

关于c - 从 argv 中读取数字输入数据并存储到 C 中的 int 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752825/

相关文章:

c - C 中的指针和二维数组

arrays - 从数组平均值计算数组元素平均差的有效方法

python - 将 ASCII 码序列作为整数转换为字符串

计算c语句中的标记数

c - C中的DWORD和HANDLE类型有什么区别?

c - 根据现在的时间运行 func()

java - 如何将 int 转换为 String 并仍然计数?

c - 如何使用 C 中的 bool 函数确定用户输入是否为数字

c++ - 使用字符数组存储数据

c - 帮助阅读 C 语言中的基本用户输入