c语言防数组越界问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:49:57
由键盘输入数据到数组如何防止数组越界??
因为事先不知道使用者会从键盘敲多少数据进去
所以我不知道该用那个函数来读取键盘数据到数组才能防止这种情况
还有如果要动态分配内存,动态调整内存,以及测数组下标该怎样构思
请高手用代码加注释赐教
谢谢,必定加分!!

用 gets 作为字符串 读入整一行,再作反复处理。
假定数据用空白号分隔:

char buff[1024];
int i,k,L,N;
int *x;
gets(buff);
L = strlen(buff);
for (i=0;i<L;i++) if (buff[i] != ' ') {k = i; break;};
if (k==0) {N=1;}else {N=0;};
for (i=1;i<L;i++) if (buff[i-1] == ' ' && buff[i] != ' ') N++;
printf("total data number is: %d\n",N);
这里得到 数据总个数
在这里动态分配:
x = (int *) malloc( N * sizeof (int));
接下来,可以用 x[i], i=0,...,N-1
用 sscanf(...,"%d",&x[i]); 从 buff 里读出数据。

不用动态分配,声明一个大数组就是了:
#include <stdio.h>
#include <stdlib.h>

void main()
{
char buff[1024];
int i,k,L,N,m;
int x[100];
gets(buff);
L = strlen(buff);
for (i=0;i<L;i++) if (buff[i] != ' ') {k = i; break;};
if (k==0) {N=1;}else {N=0;};
for (i=1;i<L;i++) if (buff[i-1] == ' ' && buff[i] != ' ') N++;
printf("N=%d\n&