c语言输入不定长度的数组,c语言,输入一个长度不定的整型数组(1000位以内),我要怎么知道该数组的长度。
c语言输入不定长度的数组,c语言,输入一个长度不定的整型数组(1000位以内),我要怎么知道该数组的长度。详细介绍
本文目录一览: C语言中,对于不知道长度的数组怎样输入。。。
1、一维数组的定义、引用和初始化:定义一维数组的一般形式:类型名 数组名[常量表达式]。
2、一维数组程序举例:冒泡法。
3、得到结果进行输出。
4、二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。
5、字符数组的定义,引用和初始化:C语言中没有字符串类型,字符串是存放在字符型数组中的。
6、字符数组综合举例。输出一个菱形。
C语言或者c++不定长数组输入,哪位好心人教教我????????谢谢了艾
按照你的要求输入不定长字符串的C语言程序如下(见图)
#include
#include
using namespace std;
int main()
{
vector
A[100];
int num;
cin >> num;
cin.get();
for (int j = 0; j < num; j++)
{
char t;
cin.get(t);
while (t != '\n')
{
A[j].push_back(t);
cin.get(t);
}
for (int i = 0; i < A[j].size(); i++)
cout << A[j][i];
cout << endl;
}
}
不定长数组!
长度不定,不好处理。
你只能先定义一个“巨长”的数组了。
C语言或c++不定长数组输入?
一、可以使用string输入,如果有需求可以string转char数组。
二、使用STL模板vector
可以用new分配内存。(对于c语言没有string可以使用malloc分配内存)
不用的时候delete掉(用malloc的用free)
比如说输入的时候在循环外定义一个char指针分配1内存;
在循环内先分配内存(长度为原先长度*2),再输入,循环判断的条件为后面还有没有输入。
建议使用getline函数设定最多读取长度,相当于分批读取,算是手动实现了string的输入吧
C语言能不能输入随意长的数组
在c语言中,所谓的“清空”,意思是“无视里面的数据”,而不是“让里面没有数据”。
有时候可能需要把一个数组清零,意思是全部数据都用0填充,可以用库函数来实现。假设数组名为a,无论什么类型也无论几维都一样,可以写成memset(a,0,sizeof(a));
C语言必须确定数组的长度。
两种方法实现:
1、将长度定为很大的值。例如a[1000]
2、先读取长度n,然后建立动态数组
c语言,输入一个长度不定的整型数组(1000位以内),我要怎么知道该数组的长度。
一般有两种方式。
1 第一个输入为数组长度。 比如输入 3 12 45 87
2 以特定输入为结束标记, 比如 以0,-1或者EOF作为结束标记。或者整行输入,以换行符为结束标记。
一般来说,在自动判题系统中,以EOF为结束, 或先输入长度, 是最为常见的两种方式。
假设数据名为a,则sizeof(a)/sizeof(a[0])的结果就是数组的长度。
判断把输入的数组放在一个数组里,判断这个数组\n的位置。一个数组有效数最后面都会有一个\n。
一般有两种方式。
1 第一个输入为数组长度。 比如输入 3 12 45 87
2 以特定输入为结束标记, 比如 以0,-1或者EOF作为结束标记。或者整行输入,以换行符为结束标记。
一般来说,在自动判题系统中,以EOF为结束, 或先输入长度, 是最为常见的两种方式。
c语言 不定长数组
不行,c语言的不定长数组只能从堆上分配空间
char *c = (char*)malloc(sizeof(char) * strlen);
数组本身就是静态连续分配的,其有数据类型,也就是说是固定长度的,不定义就默认,你写的就是char 型的,长度为256;
动态数组就借助于指针了,char *c = (char*)malloc(sizeof(char) * strlen);strlen是所定义的数组的维数,这样在定义后,在栈内分配,不用了一定要free(c),不然,系统一直占用!
希望可以帮到你,如果满意请采纳!
C语言中如何控制未知长度的数组的输入
通常所在函数形参的时候会涉及到长度的处理。
常见处理方法有2个:
1、指定接受长度。形参用两个参数,第一个参数为指向字符串的指针,第二个参数为字符串的长度。
例子:
Get_String(stringbuf[],num).
2、用特殊的结束符,比如\r\n为结尾符号
例如:
while(1)
{
if((stringbuf[i] == '\r') && (stringbuf[i] == '\n'))
{
break;
}
else
{
//user code
}
i ++;
}
for(int i=0;i<1000;i++)输入a[i]不就行了吗
另外,c语言的函数库定义了一个符号EOF,end of fail,文件结束符,可以用这个进行判断。在vc++6.0上是按ctrl+z,在Linux下是按ctrl+D
既然是未知长度,1000.万一还不够呢。
只要记录数组首地址即可。
int a[1000];
输入时如何知道什么时候结束?
相必你是想输入字符串,
关键是while(a[i] != '\0')
你是想说在不知道数组长度的情况下输入,要防止输入越界是吧,你可以使用length=sizeof(a)/n来知道数组大小,如果是char型n=1;int型 n=4 ;short型 n=2 以此类推等等
自定义 比如 当 输入为-1时结束
int i=0;
do
{
scanf("%d",a[i])
}while (a[i++]!=-1)
方法一:每输入一次,都询问是否继续输入
while(1)
{
scanf("%d",&a[i]);
printf("是否继续?(Y/N)");
c=getchar();
if(c=='Y'||c=='y')continue;
else break;
}
这种方法比较笨
方法二:规定输入的范围,例如要输入的是正整数,那么可以检测输入的是否合法,如果输入了负数就结束循环
while(scanf("%d",&a[i])==1&&a[i]>0)
{
continue;
}
方法很多,依据不用程序的不同任务可以有不同的办法。
c语言怎么输入任意长度的一个数组
#include
#include
int main(){ int i=0,n=1; int *a; a=malloc(n*sizeof(int)); do { scanf("%d",&a[i++]); realloc(a,++n*sizeof(int)); }while(getchar(a[i-1])!='\n'); for (i=0;i
<n-1;i++) printf("%d ",a[i]); printf("\n");}
办法不少,正宗的是用链表。
首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。
其次,所谓的任意长度,其实就是可变长数组。
那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。
重点在于,要开辟多大的数组来存
一般有这么几种情况
1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。
2 动态分配, 使用malloc动态分配内存。
当出现可能的不够情况,用realloc重新分配。
C语言怎么输入不确定个数的数组
这种技术叫做动态数组,C语言中的实现方法如下,涉及内存的申请等:
#include
#include
int main()
{
int n1,i;
int *array;
puts("输入你需要的数组的长度:");
scanf("%d",&n1);
array=(int*)malloc(n1*sizeof(int));
for(i=0;i
<n1;i++)
{
array[i]=i+1;
printf("%d\t",array[i]);
}
free(array);//释放你申请的内存
return 0;
}
</n1;i++)