c语言字符数组
Ⅰ c语言定义字符串数组
C语言字符串数组中的每一个元素均为指针,即有诸形如“ptr_array[i]”的指针。由于数组元素均为指针,因此ptr_array[i]是指第i+1个元素的指针。
例:如二维指针数组的定义为:char *ptr_array[3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};
(1)c语言字符数组扩展阅读
字符串数组数组元素表示方法:
数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。
例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。
Ⅱ c语言字符串数组和字符数组有什么区别
是字符数组
字符串数组是指数组里面的元素是字符串
比如 char *s[2]={"aa","bb"}是字符串数组
Ⅲ C语言字符数组能存入多少字符
在使用scanf函数中,scanf("%s", s);表明将输入的字符串存放在以s[0]为初始地址的开始,跟你的数组大小无关
假设s[0]的地址位1,输入的数据为abcde,那么数据就会依次放在地址1~5的位置,第6个位置会自动添加字符串结束符'\0',但你的数组s[0]=a,s[1]=b,s[2]=c; 懂?
这样虽然没有语法错误,但实际上数组越界了,因为你不知道地址3之后的位置是否被使用,假设我地址4为变量i,那么i的值就为输入的字符d了。
Ⅳ C语言字符数组问题
这就是C语言个性,你可以访问你定义的数组以外的地方,甚至可以访问a[10000]. c语言并不检测是否越界。 只不过越界访问是不安全的,有可能访问到系统敏感的内存位置,导致操作系统杀掉进程。
一句话c数组的访问是否越界,需要程序员控制。
Ⅳ C语言字符数组
输出LBLMNP吧。
首先strcat的函数是把a,b两个数组连接起来,于是a数组里面就成了ABLMNP
然后i++的值是i,也就是把i用了再加1;
于是b[1]=a[1];(b变成“LBNP")
b[2]=a[2];(b变成”LBLNP")
……
当i为6时while的条件不满足,跳出
最后输出b中的字符串
Ⅵ C语言中怎么把字符数组里的数据存放到字符串数组中
利用C语言标准库中的strtok()函数,可以轻松快捷的将以空格分隔开的一串字符分成多个子串,存放到字符指针数组中。
函数说明:
#include <string.h> //头文件
char *strtok(char *str, const char *delim);
strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数str的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为 字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。每次调用成功则返回指向被分割出片段的头指针。当没有被分割的串时则返回NULL。
参考代码:
Ⅶ 请教C语言字符串和字符数组的比较问题
c语言的字符数组有两种,比较方式也有所不同。
1
字符串。
c语言的字符串是用字符数组表示的。约定以'\0'(ascii码0)作为结尾标记。
对于字符串类的字符数组,可以用string.h中的strcmp函数进行比较。
int
strcmp(char
*str1,
char
*str2);
其比较规则为:
a,
从左向右依次比较每个元素;
b,
如果出现str1的元素ascii码比较大,则返回1;如果出现str2元素ascii码比较大,则返回-1。如果相等,则继续。
c,
如果一直相等,直到遇到\0,这时检查是否均为\0,如果均为\0,那么返回0;
d,
如果str1到\0,而str2没到,返回-1;
否则返回1。
总结规则就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。
2
不带\0结束的字符数组。
对于此类数组,没有库函数可供使用,只能自己写函数进行比较。规则可以仿照strcmp的规则。
由于没有\0作为结束,所以参数中必须传入每个数组的元素个数。
int char_array_cmp(char *s1, int l1, char *s2, int l2)
{
int lmin = l1>l2? l2:l1; //较小长度者。
int i;
for(i = 0; i < lmin; i ++)
if(s1[i] > s2[i]) return 1;
else if(s1[i] < s2[i]) return -1;
//运行到这里,表示所有已判断元素均相等。
if(l1 == l2) return 0;
if(l1 > l2) return 1;
return -1;//l1 < l2的情况。
}
Ⅷ c语言中怎样把一个字符数组付给另一个字符数组
直接将字符数组的数组名赋值给另一个字符数组即可。
比如:
chara[]="adsdfs";
charb[10];
b=a;//就是将字符数组a赋给字符数组b
puts(a);//输出adsdfs
puts(b);//输出adsdfs
Ⅸ c语言字符数组
char
temp[100]="
",中间空格算一个字符
char
c[1]=''
''定义
str[i]=c[0]不表示清空数据
Ⅹ c语言字符串数组
字符串输出在遇到'\0'字符前不会停
char*
p
=
"123\0456";
printf(p);
//
输出123
p[3]
=
'&';
printf(p);
//
输出123&456
你代码里为什么那样是因为多位数组的存储空间是连续的
两句strcpy后arr数组是变这样
you.me.?
其中.代表空字符,?是未使用的空间