字符数组和字符串学习总结

本文详细介绍了C语言中字符数组和字符串的基本概念,包括字符串的定义、初始化、长度计算以及常用函数如strlen、strcpy等的使用。通过示例代码展示了字符串在内存中的表示,以及''在字符串中的作用。同时,强调了strlen函数计算字符串长度时不包含'',而sizeof函数计算数组大小时包括''。

目录

字符数组和字符串小知识点总结

C 语言常用字符串数组处理函数


字符数组和字符串小知识点总结

//1、字符串是以0 或者 '\0'结尾的字符数组。(数字0和'\0'是等价的)。
void test1()
{
    //字符数组初始化时,结尾没有数字0 或者 '\0',所以会一直打印,直到遇到数字0 或者 '\0'。
    char str1[] = {'h', 'e','l', 'l','o'};
    printf("%s\n", str1);
}

执行结果:

//2、指定长度的字符数组,未初始化的部分默认填0
void test2()
{
    char str2[100] = {'h', 'e','l', 'l','o'};
    printf("%s\n", str2);
}

执行结果:

 

//3、如果以字符串初始化字符数组,编译器默认会在字符串末尾添加'\0'
void test3()
{
     char str3[] = "hello"; //编译器默认会在字符串末尾加'\0'
     printf("%s\n",str3);

     printf("strlen is %d\n", strlen(str3));    // strlen 遇到'\0'  停止,计算结果不包含'\0'
     printf("sizeof is %d\n", sizeof(str3));  // sizeof 遇到'\0'不停止,计算结果  包含'\0'
}

执行结果:

//4、strlen 遇到'\0'  停止,计算结果不包含'\0' ;  
//      sizeof 遇到'\0'不停止,计算结果  包含'\0';

void test4()
{
     char str4[100] = "hello"; //编译器默认会在字符串末尾加'\0'
     printf("%s\n",str4);

     printf("strlen is %d\n", strlen(str4)); // strlen 遇到'\0'  停止,计算结果不包含'\0'
     printf("sizeof is %d\n", sizeof(str4)); // sizeof 遇到'\0'不停止,计算结果  包含'\0'
}

执行结果:

//5、strlen 遇到'\0'  停止,计算结果不包含'\0' ;  
//   sizeof 遇到'\0'不停止,计算结果  包含'\0';

void test5()
{
     char str5[] = "hello\0world"; //编译器默认会在字符串末尾加'\0'
     printf("%s\n",str5);

     printf("strlen is %d\n", strlen(str5));  // strlen 遇到字符串中间的'\0'停止,计算结果不包含'\0',所以长度为5(即hello)
     printf("sizeof is %d\n", sizeof(str5)); // sizeof 遇到'\0'不停止,计算结果  包含'\0',所以长度为12(hello + 中间的'\0' + world + 字符串结尾默认的'\0')
}

执行结果:

//6、strlen 遇到'\0'  停止,计算结果不包含'\0' ;  
//   sizeof 遇到'\0'不停止,计算结果  包含'\0';

void test6()
{
     char str6[] = "hello\012world";  //' \'为转义字符,'0'为八进制标识,'12'为八进制数值, .'\012' 对应的十进制数10 (又对应的是换行符
     printf("%s\n",str6);

     printf("strlen is %d\n", strlen(str6));  // strlen 结果为11(hello + '\012' + world )
     printf("sizeof is %d\n", sizeof(str6)); // sizeof 结果为12 (hello + '\012' + world + 字符串结尾的'\0')
}

执行结果

C 语言常用字符串数组处理函数

1、计算字符串数组长度

strlen(字符串数组名)
说明:
1)遇到'\0' 或者数字0停止;
2)计算结果不含字符串结束标志'\0';

2、字符串拷贝

strcpy(目的字符串数组名, 源字符串数组名)
说明:
1)拷贝时会连字符串结束标识'\0'一起拷贝;

3、 字符串拼接
strcat(目的字符串数组名, 源字符串数组名)

4、字符串比较
strcmp(字符串数组名1, 字符串数组名2)
说明:
1)按照ASCII码顺序比较两个字符数组中的字符串,并由函数返回值返回比较结果;
2)返回值如下:
• 串1=串2,返回0
• 串1>串2,返回正数
• 串1<串2,返回负数
3)当两个字符串进行比较时,若出现不同字符,则以第一个不同的字符的比较结果作为整个比较结果;

5、字符串大小写转换
strupr(字符串数组名)
strlwr(字符串数组名)

6、sprintf   待补充

 

7、sscanf 待补充

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值