使用strtok将数字列表放入数组中,C

时间:2018-05-10 09:28:32

标签: c

我将让用户给我20个数字,用逗号分隔。

为什么我无法指定aray的维度并“直接”将用户输入分配给此数组?或者,是否可以这样做,但我刚刚输入错误的代码来实现这一目标?

我一直在寻找strtok函数,但不会因为逗号将出现而将数组转换为char数组吗?我希望数组是一个int,因为用户只会给我整数。任何想法将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用strtok作为目标有两种替代方法:

  • 您可以循环输入数字:

    int array[20];
    int n;
    for (n = 0; n < 20 && scanf("%d", &array[n]) == 1; i++)
        continue;
    printf("%d numbers were input\n", n);
    
  • 您可以阅读完整的输入行,并使用strtol()转换数字:

    int array[20];
    int n = 0;
    char buf[256];
    if (fgets(buf, sizeof buf, stdin)) {
        char *p, *q;
        for (p = buf, n = 0; n < 20; n++) {
            array[n] = strtol(p, &q, 10);
            if (p == q)
                break;
            p = q;
        }
        printf("%d numbers were input\n", n);
    }
    

答案 1 :(得分:-1)

#include<stdio.h>
#include<string.h>
void main()
{
  char str[100];    
  gets(str);
  char *arr = strtok(str,",");
  while (arr!=NULL)  {
    printf("\n%s", arr);    
    arr = strtok(NULL,","); 
  }
  puts(arr);
}