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

使用strtok将数字列表放入数组,C,c,C,我将让一个用户给我20个数字,用逗号分隔 为什么我不能指定数组的维度,而“直接”将用户输入分配给该数组?或者,是否有可能做到这一点,但我刚刚输入了错误的代码来实现这一点 我一直在研究strtok函数,但这不会把数组变成一个字符数组,因为逗号会出现吗?我希望数组是一个整数,因为用户只给我整数。任何想法都将不胜感激 谢谢大家! #包括 #include<stdio.h> #include<string.h> void main() { char str[100];

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

为什么我不能指定数组的维度,而“直接”将用户输入分配给该数组?或者,是否有可能做到这一点,但我刚刚输入了错误的代码来实现这一点

我一直在研究strtok函数,但这不会把数组变成一个字符数组,因为逗号会出现吗?我希望数组是一个整数,因为用户只给我整数。任何想法都将不胜感激

谢谢大家!

#包括
#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);
}
#包括 void main() { char-str[100]; 获取(str); char*arr=strtok(str,“,”); while(arr!=NULL){ printf(“\n%s”,arr); arr=strtok(空,“,”); } puts(arr); }
使用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);
    

也可以查看一下
atoi
sscanf
。你能在这里发布你的代码吗?看看这个答案:我说的“直接”,意思是如果我能使用scanf将用户输入分配给一个大小合适的数组。。。我原以为这会管用,但在反复使用之后,我发现这并没有像我所希望的那样管用。不幸的是,
scanf
已经有了一个定义好的接口来检索和存储输入。如果你有一个具体的问题,请用你的尝试、预期结果、实际结果、为什么你期望它会起作用来扩展你的问题,以及您已经做了哪些调查来确定它为什么不起作用。
strtok
可以用来将逗号分隔的行分割成逗号之间的部分。然后可以将这些值传递给将字符串转换为整数值的函数。但是,您可以直接应用
strtol
。在
获取
后初始化
strtok
?arr的定义?
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);
}