我将让用户给我20个数字,用逗号分隔。
为什么我无法指定aray的维度并“直接”将用户输入分配给此数组?或者,是否可以这样做,但我刚刚输入错误的代码来实现这一目标?
我一直在寻找strtok函数,但不会因为逗号将出现而将数组转换为char数组吗?我希望数组是一个int,因为用户只会给我整数。任何想法将不胜感激。
谢谢!
答案 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);
}