目录
strcpy--字符串复制函数
char *strcpy(char *dest, const char *src);
功能:
将src中字符串拷贝到dest中
用法:
strcpy(dest,src); //dest是一个字符数组的数组名
//src 可以是字符数组数组名
//或 字符串常量
操作逻辑:由于数组是不能整体赋值的,所以需要单个元素赋值,也就是说逐个替换
注意:如果复制的字符串长度超过数组的自身长度,则数组可能会破坏栈的完整性。
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 char s[]={"hello world"};
6 char s1[5]={};
7
8 strcpy(s1,s);
9
10 printf("%s\n",s1);
11 return 0;
12 }
13
strcat--字符串拼接函数
char *strcat(char *dest, const char *src);
功能:
将src中的字符串拼接到dest中
参数:
@dest 拼接的目的字符串
@src 拼接的源字符串 ,可以是变量也可以是常量
操作逻辑:逐个查找字符串元素,直到第一个'\0'时插入第一个元素,
并按顺序插入整个字符串,最后在末尾添加结束标志'\0'
注意:拼接时注意不要超过原有设定的数组长度大小,会导致破坏栈的完整性。如下:
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 char s[100] = {"hello"};
6 char s1[] = {"world"};
7
8 strcat(s,s1);
9
10 printf("%s\n",s);
11 strcat(s,"world");
12
13 printf("%s\n",s);
14
15 return 0;
16 }
~
自写用c语言完成拼接函数功能:关键主要是检测字符串结束标志位 ' \0 ' 来确定。(重点:结束符的应用)
1 #include <stdio.h>
2 int main()
3 {
4 char s[] = {"hello"};
5 char s1[] = {"world"};
6 int i,j;
7
8 i = 0;
9 j = 0;
10 do
11 {
12 i++;
13
14 }while(s[i]!='\0');
15
16 while(s1[j]!='\0')
17 {
18 s[i] = s1[j];
19 j++;
i++;
20 }
21
22 s[i+j+1] = '\0';
23
24 printf("%s\n",s);
25 return 0;
26
27 }
~
strcmp--字符串对比函数
int strcmp(const char *s1, const char *s2);
功能:
比较字符串大小
参数:
s1 //字符串
s2 //字符串
数组名
字符串常量
返回值: //最后 停的位置上字符的差值 来反映大小
s1 > s2 // >0 1
s1 == s2 // 0
s1 < s2 // <0 -1 //最后的返回值是ASCIIzhi之差
用c语言实现字符串对比功能:最主要是while中判断条件
字符串相关函数:
1.gets //获取字符串
2.puts //输出字符串
3.strlen //计算字符串长度
4.strcpy / strncpy //复制字符串长度
5.strcat / strncat //拼接字符串
6.strcmp / strncmp //比较字符串大小
二维数组
初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; //全部初始化
int a[3][4] = {{1,2,3,4},{0},{9,10,11,12}}; //按行初始化,其余位置补0
int a[3][4] = {1,2}; //部分初始化 -
int a[3][4] ;//未初始化 默认随机值(垃圾值)
放在循环里 循环赋值 scanf("%d",a[i][j]);
注:
1.二维数组中,也可以是可变长数组
int a[n][n]; //n可以是个变量 ,但是使用时,数组不能初始化,产生编译报错
int a[N][N];//但是可以使用宏定义 #define N 4
2.二维数组中,可以省略行数,列数不能省略
int a[3][4];
//3可以省略 4不能省略
int[4] a[]; //本质上省略的还是一维数组的长度
循环赋值给二维数组,循环打印二维数组数据
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 int a[3][3];
6 int i,j;
7
8 for(i = 0;i<3;i++)
9 {
10 for(j=0;j<3;j++)
11 {
12 scanf("%d",&a[i][j]);
13 }
14 }
15
16 for(i = 0;i<3;i++)
17 {
18 for(j=0;j<3;j++)
19 {
20 printf("%3d",a[i][j]);
21 }
22 putchar('\n');
23 }
24
25
26
27 return 0;
28 }
~