c 语言中字符串详解以及条件运算符的特殊例子

    xiaoxiao2021-03-26  27

    1 字符创初始化的方式:

        char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 

      char str[10]={"I am happy"};  

      char str[10]="I am happy";  

      char str[14]; 

       str="I love China"//错误,不是初始化,这是赋值,只能一一进行。 

       char *str;  

       str = "I love China";   //  这样子是可以的

       char * str =  "I love China";   //  这样子也是是可以的

    2  字符串数组初始化为空:

    (1) char str[10]=""; (2) char str[10]={'\0'}; (3) char str[10]; str[0]='\0'; //这个只有第一个初始化为空

    (4)char str[10]={0};  

      memset(str,'\0',sizeof(str));    //c 语言下的头文件 #include<memory.h> 

    3 关于字符串strlen和sizeof

            char str[10]={"I ha ppy"};         char str1[] ="I am lei";         char *str2="I am lei";         int a1 = sizeof(str); //10         int a2 =strlen(str);  //8                 int b1 = sizeof(str1);//9         int b2= strlen(str1); //8              int c1 =  sizeof(str2);//8         int c2= strlen(str2); //8                         printf("%d,%d,%d,%d,%d,%d\n",a1,a2,b1,b2,c1,c2); 

        输出结果是:10,8,9,8,8,8  

        strlen 是一个函数,计算的是字符串的实际长度,sizeof计算的是数组占有的长度。

        sizeof 是一种单目运算符和++ ,-- 一样   关键字可以用于对一个表达式的计算结果求大小,但是这个表达式在运行的过程中不会真正的执行

         char ch = 'c';

         printf("%d",sizeof(ch = 'd'));

         printf("%c",ch);//结果显示的还是‘c’;

         在gcc中   printf("%d",sizeof(ch)); 这段代码是编译通不过的。 必须要这样写才可以 printf("%ld",sizeof(ch));  因为sizeof返回的是长整型

         sizeof还有一个特俗情况:

         char *ptr ="C";      char ch =  'c';         printf("%ld\n",sizeof(ch)); //1           printf("%ld\n",sizeof('c')); //4 因为这个是常量         printf("%ld\n",sizeof( ptr)); //8 指针的大小(在linux中是8)      

    4  关于字符串中几个常见的函数: 

     这些函数的头文件是:#include<string.h>

      1) strcat  函数

          char str1[20]="hello";       char *str2= "china";       strcat(str1,str2); //  将str2放在str1 后面连接起来,保存在str1中,记住要保证str1的宽度足够长,否则会报内存错误。

          strcat(str2,str1); //这样子的做法是错误的,str2不能是指针字符串。

      2) strcpy  函数

        char str1[8]="hello";         char *str2= "chd";         strcpy(str1,str2);  // 将str1的数据情空,将str2的内容拷贝到str1中 ,记住 str1的内存空间必须要比str2的要大,否则会报错     

             strcpy(str2,str1) ;//这样子是会报错的,第一个参数不能是指针字符串。

      3) strncpy 

    char str1[8]="hello";         char *str2= "chd";         strncpy(str1,str2,3);   //将str2中的三个字符拷贝到str1中,输出的结果是chdlo;

      4) strlwr(str);  将大写字母转换为小写字母  //这两个函数不是标准的C 函数,只能在vc中使用

      5) strupr(str); 将小写字母转换为大写字母 //这两个函数不是标准的C 函数,只能在vc中使用

    5 关于条件运算符

      条件运算符是从左往右进行计算的。

      max = a>b? a:b;

      max = a >b ? a:c>d?c:d    因为条件运算符是从左往右计算的, 故此语句等于 max = a> b? a:(c>d ?c:d);

     

    转载请注明原文地址: https://ju.6miu.com/read-660744.html

    最新回复(0)