C语言基础——字符串及常用函数

来源:互联网 发布:黄梅话的软件 编辑:程序博客网 时间:2024/05/19 04:06

字符串基本概念

    char name[] ="beauty\n";
    //输出字符串格式符 %s以字符串的格式输出
    //    printf("%s",name);
    //%s只有遇到\0才会停止,它只能用于输出字符串,不能用于输出字符数组
    //\0标志着字符串结束
    //字符数组中没有显式初始化的元素会被自动初始化为0,'\0'的ASCII码就是 0 ,所以%s就会结束
    //%s 会自动忽略前面输入的回车 空格 Tab
    //%s 前面输入过其他字符,那么%s遇到空格就结束了
    //%s 会有一个数据越界风险
    //为了防止%s越界可以指定字符宽度
    scanf("%3s",name);
    printf("%s",name);
    
    /**
 *  计算字符串长度
 *
 *  @param str 字符串
 *  @return 字符串长度
 */
int myStrLen2(char str[]){
    int i = 0;
    while (str[i]!='\0') {
        i++;
    }
    return i;
}

字符串常用函数

void test(){

    字符串拷贝

     strcpy 不管目标字符串中是否有东西,都会覆盖掉
     如果目标空间不够大,strcpy就好导致程序的崩溃(闪退)
    char dest[4] = "xyz";
    char src[] = "fbb xn";
    printf("前:%s\n",dest);
    strcpy(dest, src);
    printf("后:%s\n",dest);
}

void test1(){
    /*
     字符串拷贝,len要拷贝src多少长度的字符串
     strncpy(dest, src, len)
     可以防止拷贝字符串的时候,目标字符数组越界
     */
    char dest[5];
    char src[] = "today";
    int len = sizeof(dest) - 1;
    
    strncpy(dest, src, len);
    printf("dest = %s\n",dest);

}

    字符串比较   

         strcmp(dest, src);
         1、如果两个字符相同就返回 0
         2、返回dest 与 src 中第一个不相同字符的ASCII码差值
 
int main(int argc, const char * argv[]){
    char src[] = "a";
    char dest[] = "";
    
    int result = strcmp(dest, src);
    printf("%d\n",result);
    return 0;
}

  字符串拼接

len表示把src中多个字符拼接到desc后面

     strncat(dest, src, len)

void test2(){
    char dest[10] = "xln";
    char src[] = " beauty";
    size_t size = sizeof(dest) - strlen(dest) - 1;
    printf("%lu\n",size);
    strncat(dest, src, size);
    printf("%s\n",dest);
    /*
     字符拼接函数:把src中的字符串拼接到dest后面
     strcat(dest,src)
     导致目标字符数组越界,从而引起程序崩溃
     */
    char dest[5] = "xln";
    char src[] = " beauty";
    strcat(dest, src);
    printf("%s\n",dest);
}
0 0