欢迎光临
我们一直在努力

C语言:一维字符数组和二维字符数组

一维字符数组

用途: 用来存储字符串。 存储多个字符的数组。

1.定于的语法:

char a[10];

数据类型(char) 数组名[元素的个数];
数据类型 -》 char
元素个数 -》 整形常量 ; 在c语言中,字符串需要\\0 结尾 。 如果需要存入 "hello" , 元素个数 除了字符的个数(5个)外, 还需要一个\\0 的空间。 那就是 6个字节的空间了。

// 全部初始化
char str1[6]={'h','e','l','l','o','\\0'};
char str2[6]={"hello"};// 字符串常量 ,有'\\0'
char str3[6]="hello"; // 常用

// 部分初始化
char str4[10]={'h','e','l','0'};// 剩下的补 0 ,
char str5[10]={"hello"};
char str6[10]={0}; //常用

// 默认初始化
char str7[] = {'h','e','l','o'}; // 不是字符串 ,不建议
char str8[]={"hello"};
char str9[]="hello";

//
printf("str1 %s\\n",str1);

printf("intput name:");
scanf("%s",str6); // str6 不用 & 操作, 不要越界

printf("%s hello\\n",str6);

2.访问 下标 ,依然从0 开始访问

// 定义
char str[10]; // char []

// 访问 写入
str[0]='h'; // char
str[1]='e';
str[2]='l';
str[3]='l';
str[4]='o';
str[5]='\\0'; // 这个\\0 不可以省略,\\0 是字符串的结束标志

//访问读出
//
//printf("%c%c%c%c%c\\n",str[0],str[1],str[2],str[3],str[4]);

int i = 0 ;
for(i=0;i<5;i++)
{
printf("%c",str[i]);
}

3 .字符串常用相关函数

char str[50]="hello";
printf("%s\\n",str);

scanf("%s",str); // char [] zhangsan zhang san 对于scanf ,空格,tab,回车,都是输入的结束标准。
gets(); // 在接收字符串的时候,可以接收 空格 。遇到\\n, 表示输入结果。

4.获得字符串长度 函数 strlen string lenth

求得有效字符串的长度。

char str[50]= "hello"; 字符串长度 5 从第一个字符开始计数 到 字符串的结束标志(\\0)以前
注意区分 , sizeof(str) , sizeof(基类型)*元素的个数 1 *50 = 50 byte

5.字符串复制操作 strcpy

整体复制 一个已有内容的字符串 到 另外一个字符串。 源字符串的内容和 目标字符串的内容 相同。

6.字符串拼接函数 strcat string concat

strcat(str2,str1);

注意 ,在字符串拼接过程中,str2 需要有足够大的内存空间。否则,程序出现,段错误,str1, str3,内存空间会被意外修改。

char str1[100]="hello,ok,aaa";
char str2[100]="world,bbb,ccc";
char str3[100] ="12312312";
//strcat(str1," ");
//strcat(str1,str2);
//

int i = 0 ;
int j = 0 ;
while('\\0'!=str1[i])
{
i++;
}
while(str1[i] = str2[j]) // \\0
{
i++;
j++;
}
printf("str1:%s\\n",str1);

7.字符串比较 strcmp string compare

比较两个字符串中的内容。

int strcmp(const char *s1, const char *s2); // 按照字典规则 , a(前)-z(后)
参数 ,s1, 需要被比较的字符串1
s2 ,需要被比较的字符串2
返回值:
==0 s1 与s2 内容 相同
>0 内容不一样 ,不一样处对应的字符,s1[i] -s2[i] >0
<0 内容不一样 ,不一样处对应的字符,s1[i] -s2[i] <0

while(str1[i] == str2[i] && str1[i]!= '\\0')
{
i++;
}
ret = str1[i] – str2[i];

二维字符数组

二维字符数组 是有多个一维字符数组组成。 可以存储多个字符串的数组。

1.定义语法:

char a[3][50];

char 数组名[行数][列数] ; 行,列,必须是整形常量。

2.初始化

char strs[3][50]={"how","are","you"};
char strs1[3][50]={{"how"},{"are"},{"you"}};

char strs2[3][50]={0};// 常用,剩余的补0
char strs3[3][50]={{0}};

char strs4[][50]={"hello","are","you"};

3.访问 ,读写操作

//访问, 读

printf("%s\\n", strs[0]);// %s char[]

int i = 0 ;
int line = sizeof(strs)/sizeof(strs[0]); // 150 /50
for(i=0;i<line;i++)
{
printf("strs[i]:%s\\n",strs[i]);
}
// 访问,写
//strs[0] ="aaa";
strcpy(strs[0],"aaa");
strcat(strs[2],"!!!");
printf("修改后:");
for(i=0;i<line;i++)
{
printf("strs[i]:%s\\n",strs[i]);
}

赞(0)
未经允许不得转载:171主机测评 » C语言:一维字符数组和二维字符数组
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址