字符串

2023-10-11 20:53:39 浏览数 (1)

首先需要说明的是C语言没有专门存放字符串的数据类型 他们通常被存放在字符数组中 每个内存单元存放一个字符 并且结尾以作为字符串的结束

字符串的创建

char str[]="hello world"; char* str = "hello world" 上面两个等于char str[]={'h','e','l','l','o','w','o','r','l','d',''}; 会自动补0表示字符串数组的结束

字符串初始化的三种方式

1.先定义,然后逐字符初始化 char str[10]; str[0]='h'; ... str[5]=''; 2.创建时就赋值初始化 char str[10]="hello"; 或 char str[10]={'h','e','l','l','o'}; 3.不定义字符数组长度 按初始化数量初始长度 char str[]="hello my name is cvpotato";

字符串在内存中的表示

char str[10] = {'c','v','p','o','t','a','t','o',''}; 在内存中的表示为

如果初始值的个数小于数组的长度,则只将这些字符赋值给数组中前面的那些元素,其余元素自动赋值为 字符,也就是0; 如果初始值的个数大于数组的长度,则直接报语法错误。

字符数组和字符串的区别

字符数组结尾可以没有0 字符串的结尾必须有0 如果字符初始数量都等于字符数组长度 这时候就不可以作为字符串来使用 强行作为字符串输出会导致访问到其他内存单元

如果用初始化元素来初始化字符数组长度 必须手动加上结束符 否则系统默认不会添加 也就无法作为字符串使用 总结起来就是如果你要把它用作字符串结尾必须是 如果没有手动加 系统默认加时 但必须在数组中有足够的空间存放 homework:(选自VC驿站课后题)

代码语言:javascript复制
char szbuf[100] = "hello, friends, my name is cctry.com. what is your name ?";

遍历字符数组 szbuf,将其中的字符 i 替换成@符号,并统计其个数。最后将统计的个数及整个字符串的内容都输出出来

代码语言:javascript复制
    char szbuf[100] = "hello, friends, my name is cctry.com. what is your name ?";
        int j = 0;
        int num = 0;
        while (szbuf[j]!='')
        {
            printf("%c", szbuf[j]);
            if (szbuf[j]=='i')
            {
                szbuf[j] = '@';
                num  = 1;
            }
            j  ;
        
        }
        printf("i一共出现了%d次n", num);
        printf("替换后的字符串是%s", szbuf);

0 人点赞