C语言中,对于不知道长度的数组怎样输入。。。

就是让你输入学生的学号,但你不知道用户会输入几个。。。

1、一维数组的定义、引用和初始化:定义一维数组的一般形式:类型名 数组名[常量表达式]。

2、一维数组程序举例:冒泡法

3、得到结果进行输出。

4、二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。

5、字符数组的定义,引用和初始化:C语言中没有字符串类型,字符串是存放在字符型数组中的。

6、字符数组综合举例。输出一个菱形。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-28
一般情况下,编程前先要进行需求分析,确定学号的最大长度,在输入中加入控制,如:
char stu_num[21] ; //确定最大长度为20个有效字符
getline( stu_num , 20 ); //这样可以确保输入不越界。

对于不确定多少个数据的输入,采用以下办法处理:
while( 1 )
{
char stu_num[21] ; //确定最大长度为20个有效字符
printf("请输入学号,最长20位,直接回车结束输入:");
getline( stu_num , 20 ); //这样可以确保输入不越界。
if ( !stu_num[0] ) //如果输入空值,则退出
break ;
....以下进行其它输入
}本回答被提问者采纳
第2个回答  2013-03-16
不明白,你说输入什么?
从文件读入?不知道文件里面数据有多少?这种情况就用楼上的方法,链表,不过数组嘛,就动态申请空间,malloc一下啦。文件的结束是EOF什么的。可以用FSCANF,FGETS多种方法。
如果是已经有个数组存好数值,但是不知道长度,要输入给函数的话,这个比较麻烦了。
如果是字符数组,你倒是可以判断'\0',数字数组就要看你的数据定义了……

学号……手工输入的肯定多不到哪儿去啊,除非是B/S程序,全世界的用户一起在使用。但那已经不是C语言的管理范围了。学号长大概20位吧,当然都是数字或字母,就用char [],那你开个10万的字符数组,就肯定够大了。
char studentid[100024][20];
第3个回答  2013-03-16
你是说不知道会输入多长还是输入多个学号, 不知道输入多长就定义一个足够长的, 之前写的一个, 可以参考一下, 输入任意长度
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *storage;
int ch;
int str_len = 0;
storage = (char *)calloc(1, 64); /*分配内存*/
while ((ch = fgetc(stdin)) != '\n') {
if ((str_len = strlen(storage)) == (sizeof(storage) - 1)) {
/*增加内存*/
realloc(storage, sizeof(storage) + 64);
}
printf("%d\n", str_len);
memcpy(storage + str_len, &ch, 1); /*内存拷贝*/
}
printf("storage: %s\nlen = %d\n", storage, strlen(storage));
return 0;
}
第4个回答  2013-03-16
C语言是没有原生的对动态数组的支持的,而且C语言不支持面向对象,根据你这个案例不推荐你自己实现动态数组。

你可以在接受输入时检查当前插入位置有没有越界,一旦数组中的元素数量超过某一特定的阈值就输出到文件中,然后把数组清空,重新使用。

C语言中,对于不知道长度的数组怎样输入。。。
1、一维数组程序举例:冒泡法。得到结果进行输出。二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。2、C语言中不能定义未确定个数的数组,不过可以用指针来变相的完成你的要求。3、输入数组需要使用指针获取地址后,就能对得到的数组就行操作了。

C语言中如何控制未知长度的数组的输入
方法一:每输入一次,都询问是否继续输入 while(1){ scanf("%d",&a[i]);printf("是否继续?(Y\/N)");c=getchar();if(c=='Y'||c=='y')continue;else break;} 这种方法比较笨 方法二:规定输入的范围,例如要输入的是正整数,那么可以检测输入的是否合法,如果输入了负数就结束循环 while(...

C语言中,对于不知道长度的数组怎样输入。。。
2、一维数组程序举例:冒泡法。3、得到结果进行输出。4、二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。5、字符数组的定义,引用和初始化:C语言中没有字符串类型,字符串是存放在字符型数组中的。6、字符数组综合举例。输出一个菱形。

C语言或c++不定长数组输入?
可以用new分配内存。(对于c语言没有string可以使用malloc分配内存)不用的时候delete掉(用malloc的用free)比如说输入的时候在循环外定义一个char指针分配1内存;在循环内先分配内存(长度为原先长度*2),再输入,循环判断的条件为后面还有没有输入。建议使用getline函数设定最多读取长度,相当于分批读取,...

怎样在c语言中输入一个未知长度的数列?
Dim Obj As Object Obj = New SomeClass("String required by constructor")' ...Dim MyLabel As New Label()由于数组是类,因此 New 可以创建新的数组实例:Dim MyArray As Integer()MyArray = New Integer() {0, 1, 2, 3} 如果内存不足,无法创建新的实例,公共语言运行库将引发 OutOf...

在c语言中如何将一组不定长度的数存入数组
C语言中不能定义未确定个数的数组,不过可以用指针来变相的完成你的要求。示例程序如下:include<stdio.h> include<stdlib.h> void main(){ int* p;int n,i=0;scanf("%d",&n);printf("请输入%d个数字:\\n",n);p=(int*)malloc(n*sizeof(int));for(;i<n;i++){ scanf("%d",p+i...

如何输入一个长度未知的数组,然后从其中的某一个元素起,将后面的元素全...
有两种方法:1.使用数组,不过数组的长度应设置的》=大于等于 你可能最大的输入才行;2.使用链表,这个复杂点,不过完全能满足使用要求!是在自己想不明白,直接写明白要求,好帮你完成哈O(∩_∩)O~

在C语言中,如果要输入一串数字,其中每个数字用逗号隔开,且不知道总共...
先读1个整型数。然后循环:读1个字符,如果字符是逗号则读1个整型数,如果不是逗号,循环就结束。如果读整型数有错,循环也结束。include<stdio.h> include<stdlib.h> main(){ int x[100],n=0,i;int c;if ( scanf("%d",&x[n])==1) n++;while(1){ scanf("%c",&c);if (c ...

请问用C语言怎么给没有设定长度的数组赋值?
有啊,用memset( szBuf, 0, n ); szBuf是你要设定长度的数组名,参数0表示将数组初始化为0,n为你想要初始化的长度,不能大于数组的长度!

C语言中想定义一个不知道大小的数组怎么办
有几种方法:1)可以定义一个足够大的数组,保证够用就好。2)使用链表结构,用一个申请一个元素的空间 3)用malloc先申请一定的空间作为数组的空间,等到不够用的时候,再重新malloc一个更大的空间,将旧的那个空间里的数据拷贝过来,作为数组的新的空间,然后free掉旧的那个空间即可。

相似回答