我对C编程还很陌生,我一直在尝试创建一个首先需要用户输入的程序。一开始,我需要用户输入一定数量的数字,例如:4 12 8 6 5 4 7
所以基本上,他一直在输入数字,在数字之间留出空格。然后用户按下回车键,这就是用户输入的结束。阅读我已经在网上找到的东西,我看到了这样的帖子:
while (...){
scanf("%c",&c[i]);
if(c[i]=='n')
break;
}
那么,现在,使用动态内存分配,是否可以让用户在一行中输入所有内容,用空格分隔,然后在按下回车键后结束?
我想发生的事情:
- 用户输入:5 4 5 6 8 5输入
- 数组={5,4,5,6,8,5}
您说过:certain amount of numbers
;你事先知道那个数字吗?如果是,您可以为那么多值分配内存。如果没有,则需要实现一些逻辑来根据需要分配额外的存储。例如,将已分配的空间增加一倍。您可以将容量增加一以避免浪费空间,代价是重复复制数据。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch = 0;
int size = 0, capacity = 1;
int* c = malloc(sizeof(int) * capacity);
while (1) {
scanf("%d%c", &c[size], &ch);
if (ch == 'n')
break;
size++;
if (size == capacity)
{
capacity *= 2; // use whatever policy to increase the capacity
c = realloc(c, sizeof(int) * capacity);
}
}
return 0;
}