C-字符串

 

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[]={'H','e','l','l','o'};   //定义了一个字符数组
    char b[]={'H','e','l','l','o','\0'};   //定义了一个字符串
    //字符串以\0结尾,字符串不包含\0
    char *str="wo is liming";  //字符串变量 ,这种方式是不能修改的,用指针方式时,字符串放到了常量区(const) 
    char *str1="wo is liming";  //str的地址和str1的地址是一样的 
    char word[]="world";  //字符串变量,这种方式可以修改 
    char line[10]="hello";  //字符串变量
    //需要6个字节空间,因为结尾有\0 
    
    word[0]='B';  //修改某字符
    char *str2;
    str2=str;  //传址 
    printf("%s\n",word);  //输出一个单词 
    
    
    
    
    return 0;
}

 

char a[] = "liming";
a = "lm";//不能这样修改值,a是const

 

    char s[50];
    strcpy(s,"liming");  //给字符串赋值 

 

    char aa[3][5];  //字符数组
    char a[][5] ={{'1','2','3','4'},{'a','b','c','d','\0'}};//字符数组
    
    printf("%s\n",a[1]);
    char *b[]={"12345","abcde"};  //每个b[n]就是一个 char * 
    printf("%s\n",b[0]);

 

#include <stdio.h>

int main ()
{
   
   int ch=getchar();//从标准输入stdin(控制台)获取一个字符(一个无符号字符)
   //需要include <stdio.h> 
   //返回值:字符的ASCii码
   //如果到达文件末尾或发生读错误,则返回 EOF=-1 
   //对于win系统  CTRL+Z=EOF 
   printf("%d\n",ch);
    int x=putchar(ch); //把参数char指定的字符(一个无符号字符)写入到标准输出stdout(控制台)中
    //需要include <stdio.h> 
    //参数:可以是字符,也可以是字符的ASCii码
    //返回值:ASCii码;如果发生错误则返回 EOF=-1 
    printf("%d\n",x);
       
   
   return(0);
}

 

//需要  #include <string.h> 
   char str[50]="wo is 李明";
   int len;

   len = strlen(str); //计算字符串str的长度(字节),直到空结束字符,但不包括空结束字符
   //因为C语言是ANSI编码----一个汉字是两个字节 
   printf("|%s| 的长度是 |%d|\n", str, len);

 

#include <stdio.h>
#include <string.h>

int main ()
{
//需要 #include <string.h>
char str1[50]="wo is liming";
char str2[15]="AB CD";
char *str3;

int x = strcmp(str1, str2); //比较两个字符串
//如果返回值小于 0,则表示 str1 小于 str2。
//如果返回值大于 0,则表示 str1 大于 str2。
//如果返回值等于 0,则表示 str1 等于 str2
//区分大小写 

int y = strncmp(str1, str2,3);
//参数3:比较前n个
//区分大小写 

char s1[10]="liming";
char s2[10]="liMing";
int z = strcasecmp(s1, s2);//比较两个字符串
//忽略大小写 

printf("%d",z);

return(0);
}

 

 

    char str1[50]="wo is liming";
   char str2[15]="AB CD";
   char *str3;
      
   //str3=strcpy(str1, str2); //字符串复制 
    //把str2复制到str1,包括结尾的\0 
    //str1的空间要大于等于str2 ,两个空间不能有重叠 
    //返回值:指向str1的指针   str3=str1
    //这个语句是不安全的
    
    int len1=strlen(str1);
    int len2=strlen(str2);
    str3=strncpy(str1, str2,len1-len2); //这个语句是安全的
    
    int i=strlen(str1) ;
    for(int x=0;x<i;x++){
        printf("%c",str1[x]);
    }
    
    printf("%p\n",str1);
    printf("%p\n",str3);

 

 

   char str1[50]="wo is liming";
   char str2[15]="AB CD";
   char *str3;
      
   //str3=strcat(str1, str2); //把src2所指向的字符串追加到str1所指向的字符串的结尾
    //str1的空间要大于等于str2+str1 
    //返回值:指向str1的指针   str3=str1
    //这个语句是不安全的
    
    int len1=strlen(str1);
    int len2=strlen(str2);
    str3=strncat(str1, str2,len1-len2);  //这个语句是安全的
    //参数3:最多追加的字符数 
    
    int i=strlen(str1) ;
    for(int x=0;x<i;x++){
        printf("%c",str1[x]);
    }
    
    printf("%p\n",str1);
    printf("%p\n",str3);

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h> 

int main ()
{
   
    char str[50]="wo is liming,wosijiaosi";
     const char ch = 'i';
     char *ret;
     ret = strchr(str, ch);//在字符串str中搜索第一次出现字符ch的位置,--从左往右找 
     //返回值:找到的指针,如果未找到该字符则返回 NULL 
          
     printf("%p\n",ret);
     printf("%p\n",str);
     printf("%d\n",ret-str);// 找到位置的索引号 
     printf("%s\n",ret); //找到位置开始往后的字符串 
     //is liming,wosijiaosi
     //ret = strchr(ret+1, ch); //寻找第二个字符 
     char *t=(char *)malloc(strlen(ret)+1);
     strcpy(t, ret);  //找到位置开始往后的字符串复制到t
     printf("%s\n",t);
     free(t); 
          
     
     ret = strrchr(str, ch);//在str字符串中搜索最后一次出现字符ch(一个无符号字符)的位置
     //返回值:找到的指针,如果未找到该字符则返回 NULL
     printf("%p\n",ret);
     printf("%p\n",str);
     printf("%d\n",ret-str);
     
   
   return(0);
}

 

#include <stdio.h>
#include <string.h>


int main ()
{
   
    char s1[50]="wo is liming,wosijiaosi";
    char s2[50]="liming";
    char s3[50]="liMing";
    char *p=strstr(s1, s2);//在字符串s1中查找第一次出现字符串s2的位置,不包含终止符
    //返回值:找到位置的指针,如果未找到则返回 null 
    //区分大小写 
    
    //char *pp=strcasestr(s1, s3);   //忽略大小写  ?????? 
    
    printf("%s",pp);
    
    
     
   
   return(0);
}

 

#include <stdio.h>

int main()
{
   char str[80];

   sprintf(str, "Pi 的值 = %f", 3.141593); //格式化字符串
   //参数1:str -- 字符数组的指针 
   //参数2:要被写入到字符串 str 的文本 
   printf("%s\n",str);
   
   return(0);
}

 

 

 

 

 

posted @ 2020-07-21 12:36  天子骄龙  阅读(158)  评论(0编辑  收藏  举报