c语言中字符串数组的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/03 05:30:48
c中能这样定义一个数组吗?int a[];
记得以前在书上看到的 现在这样定义就是通不过编译;

char a[20];
scanf("%s",a)

我想获取输入的字符串长度该怎么办
比如输入abc 长度因该是3

问题1:
可以这样定义:int a[] = {1,2,3},那么该定义就相当于int a[3] = {1,2,3}

问题2:
加上头文件#include<string.h>
然后用strlen( a ) 就能获得字符串a的长度

当然编译不通过了啦。因为C语言中如果定义一个数组,要确定该数组的个数。比如:int a[7];括号里必须有一个数字,且只能是整数。
但C语言也可以定义像:int a[],但后面必须先赋值。如果你要这样的定义的话,就这样定义:int a[]={1,2,3,4,5};这样定义后,C语言编译器可以确定数组的长度了。

上面是第一问的答案。

如果你想要得到输入到数组时,字符串的长度,有一种方法,你可以循环进行求。
例:
while(a[i]!='\0')
{
length++;
i++;
}

这样,length就是你输入字符串的长度了。

这是第二问。
以上是我的浅见!

int a[];这么定义是不对的,在定义数组的时候必须给出他的长度。但如果直接给他赋初值的话,可以省略。如int a[]={1,2,3,4};我不知道你看到的是不是这样的。
在字符数组中,你想知道它的长度的话,要用一个for循环。我不知道库函里有没有。用一个for,如int i,len(len为想要的长度); for(i=0;i<20;i++)if(a[i]=='\0')len=i;

strlen(a),是用来专门获得字符串长度的函数。

比如你输入了abc,其实真实储存在char a[20]里的是"abc\0"(每本C语言教材都应该提到了的),'\0'是用来判断字符串末端的,strlen的原理就是统计'\0'出现前有多少个字符!

int a[]是非法的 可以用char a[20] 这样的 还有应是scanf("%s&q