c 字符串的相关整理

字符串与字符
“” ‘’
%s %c
\0

字符串 字符
" " ’ ’
%s (printf(s)) %c
\0结尾 长度+1
本质是字符数组
字符串初始化
char s[6] = {‘h’,‘e’,‘l’,‘l’,‘o’,’\0’};
char s[6] = “hello”;
char s[6] ={ “hello”};
char *s = “hello”

1
字符串面量 是常量
注意:
char s[20]
这种形式,声明了大小——20个char
char *s——字符指针,内存只有char
2
对于printf 最重要的是字符串起始地址,知道了起始地址,读到\0结束。

字符串数组
char name[][] = {“zs”,“ls”,“ww”} ;
char *name[] = {"","",""}
  1. strcat 拼接

错误:

char *s1 = "good";
char s2[8] = "morning";
printf("%s",strcat(s1,s2));

原因:指针没有获取足够内存保存

正确 :

  	char s1[5] = "good";
    char s2[8] = "morning";
    
    printf("%s\n",s1); //good
    printf("%s\n",s2); //morning
    
    printf("%s\n",strcat(s1,s2)); //goodmorning
    
    printf("%s\n",s1); //goodmorning
    printf("%s\n",s2); //ng

\0能覆盖了
strcat(a,b):连结字符串,把b连接到a上,改变了a

  1. strcpy
  	char s1[5] = "good";
    char s2[8] = "morning";

    printf("%s\n",strcpy(s1,s2)); //morning
    printf("%s\n",s1); //morning

原来函数被完全覆盖掉

  1. strcmp
	char s1[5] = "good";
    char s2[8] = "morning";
    char s3[8] = "morning";
    printf("%d\n",strcmp(s1,s2)); //-6
    printf("%d\n",strcmp(s3,s2)); //0

  1. strlen
	char s1[5] = "good";
    char s2[8] = "morning";
    printf("%d\n",strlen(s1)); //4
    printf("%d\n",strlen(s2)); //7
  1. struper strlwr
    在这里插入图片描述
  2. sprintf
 	char s[10];
    char s1[4] = "wow";
    char s2[4] = "kik";

    
    //sprintf
    sprintf(s,"aa");
    printf("%s\n",s);  //aa
    sprintf(s,"%s %s",s1,s2);
    printf("%s\n",s);  //wow kik

用处:

 int i;
    char *name[6] = {"wmy","ss","wmw","ki","ko"};
    char str[100];
    for(i=0; i<5; i++){
        sprintf(str, "%s %d",name[i],i);
        printf("%s\n",str);
    }
/*
 wmy 0
 ss 1
 wmw 2
 ki 3
 ko 4
 */
发布了30 篇原创文章 · 获赞 0 · 访问量 691

猜你喜欢

转载自blog.csdn.net/jhckii/article/details/103019055