当前位置:首页 » 编程语言 » c语言字符数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符数组

发布时间: 2022-01-12 12:35:31

A. 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的情况。
}

B. c语言字符数组

char
temp[100]="
",中间空格算一个字符
char
c[1]=''
''定义
str[i]=c[0]不表示清空数据

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中的字符串

D. c语言 关于字符数组的定义

#include<stdio.h>

#include<string.h>

#define max 20

typedef struct {

int edges[max][max];

int n,e;

char vexs[max][1];

} MatGraph;

void CreatVer(MatGraph *g)//首先你要是想在自定义中改变变量,必须通过地址访问变量;形参必须是指针变量;

{//参数是变量值的,只是在对变量的一个副本操作,不会改变变量值;

char a[]="abcdefg";

for(int i=0;i<7;i++)

g->vexs[i][0]=a[i];

}

main()

{

MatGraph g;

CreatVer(&g);

for(int i=0;i<7;i++)

putchar(g.vexs[i][0]);

}

E. C语言字符数组

字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。

F. c语言字符串数组

字符串输出在遇到'\0'字符前不会停
char*
p
=
"123\0456";
printf(p);
//
输出123
p[3]
=
'&';
printf(p);
//
输出123&456
你代码里为什么那样是因为多位数组的存储空间是连续的
两句strcpy后arr数组是变这样
you.me.?
其中.代表空字符,?是未使用的空间

G. c语言定义字符串数组

C语言字符串数组中的每一个元素均为指针,即有诸形如“ptr_array[i]”的指针。由于数组元素均为指针,因此ptr_array[i]是指第i+1个元素的指针。

例:如二维指针数组的定义为:char *ptr_array[3]={{"asdx","qwer","fdsfaf"},{"44444","555","6666"},{"a78x","q3er","f2f"}};

(7)c语言字符数组扩展阅读

字符串数组数组元素表示方法:

数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。

例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。

H. c语言如何定义字符数组

定义字符数组的方法,与定义整数数组或浮点数数组并无二致,都是完全一样的。例如,以下的语句,可以定义一个最多存放1000个字符的字符数组:
char s[1000];

I. c语言,字符数组函数

#include<stdio.h>

/*比较两个字符串*/
/*src、dst相等return1*/
/*src比dst短return-2*/
/*src比dst长return2*/
/*src、dst长度一致但不相等return-1*/
intstringCmp(char*src,char*dst){
if(strlen(src)<strlen(dst))
return-2;
elseif(strlen(src)>strlen(dst))
return2;
else{
while(*src&&*dst){
if(*src!=*dst)
return-1;
src++;
dst++;
}
return1;
}
}

/*合并两个字符串*/
voidmergeString(char*str1,char*str2,char*merge){
while(*merge++=*str1++);/*复制str1并将指针移动到字符串的末尾的下一个位置*/
merge--;/*退到字符串的末尾*/
while(*merge++=*str2++);/*从末尾()的位置开始将str2拷贝进来*/
*merge='';
}

intmain(void){
char*str1_1="hel",*str1_2="lo",*merge1;
char*str2_1="ness",*str2_2="happy",*merge2;
char*str3_1="hi",*str3_2="hi",*merge3;
char*str4_1="hello",*str4_2="world",*merge4;

puts("第1组字符串:");
puts(str1_1);
puts(str1_2);

if(stringCmp(str1_1,str1_2)==1)
puts(str1_1);

elseif(stringCmp(str1_1,str1_2)==-2){
mergeString(str1_2,str1_1,merge1);
puts(merge1);
}

elseif(stringCmp(str1_1,str1_2)==2||stringCmp(str1_1,str1_2)==-1){
mergeString(str1_1,str1_2,merge1);
puts(merge1);
}

putchar(' ');
puts("======================================================");
putchar(' ');

puts("第2组字符串:");
puts(str2_1);
puts(str2_2);

if(stringCmp(str2_1,str2_2)==1)
puts(str2_1);

elseif(stringCmp(str2_1,str2_2)==-2){
mergeString(str2_2,str2_1,merge2);
puts(merge2);
}

elseif(stringCmp(str2_1,str2_2)==2||stringCmp(str2_1,str2_2)==-1){
mergeString(str2_1,str2_2,merge2);
puts(merge2);
}

putchar(' ');
puts("======================================================");
putchar(' ');

puts("第3组字符串:");
puts(str3_1);
puts(str3_2);

if(stringCmp(str3_1,str3_2)==1)
puts(str3_1);

elseif(stringCmp(str3_1,str3_2)==-2){
mergeString(str3_2,str3_1,merge3);
puts(merge3);
}

elseif(stringCmp(str3_1,str3_2)==2||stringCmp(str3_1,str3_2)==-1){
mergeString(str3_1,str3_2,merge3);
puts(merge3);
}

putchar(' ');
puts("======================================================");
putchar(' ');

puts("第4组字符串:");
puts(str4_1);
puts(str4_2);

if(stringCmp(str4_1,str4_2)==1)
puts(str4_1);

elseif(stringCmp(str4_1,str4_2)==-2){
mergeString(str4_2,str4_1,merge4);
puts(merge4);
}

elseif(stringCmp(str4_1,str4_2)==2||stringCmp(str4_1,str4_2)==-1){
mergeString(str4_1,str4_2,merge4);
puts(merge4);
}

putchar(' ');
puts("======================================================");
putchar(' ');

getch();/*屏幕暂留*/
return0;
}

运行结果

J. C语言字符数组问题

这就是C语言个性,你可以访问你定义的数组以外的地方,甚至可以访问a[10000]. c语言并不检测是否越界。 只不过越界访问是不安全的,有可能访问到系统敏感的内存位置,导致操作系统杀掉进程。

一句话c数组的访问是否越界,需要程序员控制。