【发布时间】:2016-03-16 01:23:12
【问题描述】:
所以我试图将从键盘读取的 int 值存储到 C 中的整数数组中。示例用户输入:
8 99 5 7 8
变量声明:
int k;
int size;
char buf[100];
以上是我的缓冲区和数组的其他变量。 下面是把整数读入缓冲区。
printf("Please enter in the numbers for the array:\n");
fgets(buf, 100, stdin);
buf[strlen(buf) - 1] = '\0';
size = (strlen(buf)/2)+1;
int *array = (int *)malloc(sizeof(int)*size);
这样才能正确分配我的数组。
int i, j;
for(i = 0, j = 0; i < size; i++, j = j+2)
{
array[i] = buf[j] - '0';
}
上面的代码确实有效,但不适用于具有两位数的数字,仅适用于低于 10 和高于 0 的数字。如何修复我的代码以便正确读取整数?
我试图用sscanf 做一个for 循环,但这只会导致一个数组,所有元素中只输入第一个整数。
【问题讨论】:
-
你可能想看看
strtol()。 -
@EOF 你的意思是
strtok()? -
@MikeCAT:不,我指的是名为
strtol()的“字符串到长”函数。 -
strtok()可能还是有用的。