11-字符数组和字符串函数

数组 int  float  double

char 字符数组

 

一、字符数组

1、字符数组的一般形式

char 数组名[常量表达式]

char cArray[5];

 

2、字符数组的引用跟其他类型是一样,用下标。

char cArray[5];

cArray[0]='H';

cArray[1]='e';

cArray[2]='l';

cArray[3]='l';

cArray[4]='o';

 

3、字符数组的初始化

(1)逐个元素进行初始化,初始化时可以省略下标。

char cArray[5] = { 'H', 'e','l','l','o' };

char cArray[] = { 'H', 'e', 'l', 'l', 'o' };

 

(2)用字符串对数组赋值,初始化时可以省略下标

char cArray[5] = {"hello"};

char cArray[]={"hello"};

char cArray[]="hello"; (最常用)

注意:1使用字符串进行初始化,系统会自动在数组里面加上一个'\0',作为字符串结束的标志

char cArray[]="hello"; 等效于char cArray[] = { 'H', 'e', 'l', 'l', 'o','\0' };

printf("%d\n", sizeof(cArray));

printf("%d\n", sizeof(cArray1));

注意:2、用中文的字符串 一个中文的字节数为2.

printf("%d", sizeof("九夏"));//  \0

 

3、在使用字符串初始化,数组大小要比我们需要的元素数量大。

比如说名字的长度就不一样

 

 

4、字符数组的输入和输出

1)用%c逐个输入输出

输入的字符数大于数组大小的数量,只接受前面。

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char cArray[5];
 6     for (int i = 0; i < 5; i++)
 7     {
 8         scanf("%c", &cArray[i]);
 9     }
10 
11     for (int i = 0; i < 10; i++)
12     {
13         printf("%c", cArray[i]);
14     }
15 
16     printf("\n");
17     return 0;
18 }

 

2)用%s整体输入输出,输入空格会被截断

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char cArray[20];
 6     scanf("%s", &cArray);
 7 
 8     printf("%s", cArray);
 9     return 0;
10 }
 1 #include <stdio.h>
 2 
 3 int main()
 4 { 
 5     //%c
 6 
 7     /*int Row, Col;
 8     char cArray[2][5]; 
 9 
10     for (Row = 0; Row < 2; Row++)
11     {
12         for (Col = 0; Col < 5;Col++)
13         {
14             scanf("%c", &cArray[Row][Col]);
15         }
16     } 
17 
18     for (Row = 0; Row < 2; Row++)
19     {
20         for (Col = 0; Col < 5; Col++)
21         {
22             printf("%c", cArray[Row][Col]);
23         }
24     }*/
25 
26      
27     //%s
28     int Row, Col;
29     char cArray[11];     
30     scanf("%s", &cArray);
31     printf("%s", cArray);
32 
33     return 0;
34 }

 

 

二、字符串函数

首先需要包含字符串的头文件:string.h

 

1、拷贝

strcpy(目标字符串,源字符串);

把源字符串拷贝到目标字符串。

1)目标字符串一定是一个变量。

2)源字符串不一定。

3)连'\0'一起拷贝,在第一个'\0'处结束

 

 1 代码:
 2 //字符串的拷贝 假设有个字符数组  字符串 str1[] str2[]
 3 
 4 //char str1[30] = { 0 }; //0 27个\0 \0 \0
 5 //char str2[30] = "hellosadfsadfgoisdfgsdkfg";  //6个字符
 6 
 7 //printf("%d", sizeof(str2));
 8 
 9  
10 //for (int i = 0; i < sizeof(str2); i++)
11 //{
12     // str1[i] = str2[i];
13 //}
14 
15 //printf("%s\n", str1);
16 
17  
18 
19 //char str1[]="abcdefg";  //下标决定这个变量的内存  //  \0结束
20 //
21 
22 //strcpy(str1,"fgh");  // \0
23 
24 //printf("%c\n", str1[0]);
25 //printf("%c\n", str1[1]);
26 //printf("%c\n", str1[2]);
27 //printf("%c\n", str1[3]);
28 //printf("%c\n", str1[4]);
29 //printf("%c\n", str1[5]);
30 //printf("%c\n", str1[6]);
31 
32  
33 //printf("%s\n", str1);

 

2、比较

strcmp(字符串1,字符串2);  

1)字符串1==字符串2  返回0

2)字符串1>字符串2   返回1

3)字符串1<字符串2   返回-1

 

 1 //字符串的比较
 2 //char str1[100], str2[100];
 3 
 4 //while (1)
 5 //{
 6     // int i = 0, re;
 7     // scanf("%s", &str1);
 8     // scanf("%s", &str2);
 9 
10     // while (str1[i])
11     // {
12         // if (str1[i] != str2[i])  //str1[0]----->str1[99]  
13             // break;
14         // else
15             // i++;
16     // }
17 
18     // if (str1[i] > str2[i])
19     // {
20         // printf("str1>str2\n");
21     // }
22     // else if (str1[i] < str2[i])
23     // {
24         // printf("str1<str2\n");
25     // }
26     // else
27     // {
28         // printf("str1=str2\n");
29     // }
30 //}
31 
32  
33 
34 /*int num = 1;
35 
36 char str1[30] = "hello";
37 char str2[30];
38 
39 printf("要进入系统请输入密码:\n");
40 while (1)
41 {
42     scanf("%s", &str2);
43     if (strcmp(str1, str2) == 0)
44     {
45         printf("欢迎进入本系统,虽然本系统还在开发中。。。");
46     }
47     else if (strcmp(str1, str2) != 0)
48     {
49         num++;
50         printf("密码错误,这是第%d次警告\n", num);
51         if (num == 4)
52         {
53             printf("3次错误,请联系中国人民解放军\n");
54             break;
55         }
56 
57         continue;
58     }
59 
60 }

 

3、获取字符串长度

//sizeof();  //字节   

//strlen();  //真正的(有效)长度

 

char a[30] = "hello";

printf("%d\n", sizeof(a));//30

printf("%d\n", strlen(a)); //5

 

转载于:https://www.cnblogs.com/tiantiancode/p/11130236.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值