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