C/C++字符串强化训练

字符串强化训练

  • 字符串是有标志的

利用三种方式对字符串进行拷贝

  • 利用[]
  • 利用指针
  • 利用while(*dest++=*source++){}

代码示例:

 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void test01()
{
        //注意字符串需要有结束标志
        char str1[] = {'h','e','l','l','o','\0'};
        printf("%s\n",str1);
        //字符数组部分初始化,剩余填0
        char str2[100] = {'h','e','l','l','o'};
        printf("%s\n",str2);
        //如果以字符串初始化,那么编译器默认会在字符串尾部添加‘\n’
        char str3[] = "hello";
        printf("%s\n",str3);
        printf("sizeof str:%d\n",sizeof(str3));
        printf("strlen str:%d\n",strlen(str3));
        //sizeof计算数组大小,数组包含'\0'字符
        //strlen计算字符串的长度,到'\0'结束
        char str4[100] = "hello";
        printf("sizeof str:%d\n",sizeof(str4));
        printf("strlen str:%d\n", strlen(str4));
        char str5[] = "hello\0world";
        printf("%s\n",str5);
        printf("sizeof str5:%d\n", sizeof(str5));//12
        printf("strlen str5:%d\n", strlen(str5));//5
        char str6[] = "hello\012world";//\012是八进制 下转十进制的10,在ASCII表中是换行
        printf("%s\n",str6);
        printf("sizeof str6:%d\n", sizeof(str6));//12
        printf("strlen str6:%d\n", strlen(str6));//11
}
//字符串拷贝
//参数1 目标字符串     参数2   源字符串
//需求  将原字符串中的内容     拷贝到目标字符串中
void copyString01(char*dest, char*source)
{
        int len = strlen(source);
        for (int i = 0; i < len; i++)
        {
               dest[i] = source[i];
        }
        dest[len] = '\0';
}
//第二种 利用字符串指针进行拷贝
void copyString02(char*dest, char*source)
{
        while (*source!='\0')
        {
               *dest = *source;
               dest++;
               source++;
        }
        *dest = '\0';
}
//第三种方式
void copyString03(char*dest, char*source)
{
        while (*dest++=*source++){}
        //int a = 0;
        //while (a=0)
        //{
        //      printf("a");
        //}
}
void test02()
{
        char *str = "hello world";
        char buf[1024];
        //copyString01(buf,str);
        //copyString02(buf, str);
        
        copyString03(buf,str);
        //printf("%s\n", buf);
}
int main()
{
        //test01();
        test02();
        return EXIT_SUCCESS;
}

更多文章,敬请关注微信公众号:YQ编程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑马金牌编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值