保存字符串的方法

1.字符数组:

                     char str[]=”sbdc”;

            char str2[]={“abdcdef”}; 

  但是如果char str2[]={‘a’,’d’,’f’,’g’},想用printf(“%s”,str)这种格式输出,会遇到如下的结果: 

   原因为 printf这个函数是遇到’’就结束,所以解决的方法是:char str2[]={‘a’,’d’,’f’,’g’,’’},结果如下:

 

或者解决方法为:

也就是说,定义数组的时候,也设置了数组的长度也可以输出理想的结果!

2.字符串指针(指向一个字符串的指针变量)

例如: int  *p;  分两种:

  (1)字符指针(总结:用单引号的为字符指针)

     char ch=’a’;

     char *s=&ch;

  (2)字符串指针(用双引号的为字符串指针)

      cahr  *str=”abc”;

   从上面这个实例,可以知道  定义了一个字符串指针变量,变量名为 strstr存放的是 “abc”这个字符串的首地址,这个首地址就是第一个字符的地址  &a.

   用字符串指针遍历读取字符串的每个字符两种方法:

( str+1 表示指向下一个元素的地址)

注意:字符串指针不能直接接收键盘输入的内容!

         字符串可以从键盘中输入内容:

             

             

           

             (要注意以上三种的区别)  因为 str=&str[0]

             字符串指针不能直接接收键盘输入的内容:

            

           字符串数组保存在栈区,可以被读写。字符串的写入操作如下:

            

           

        字符串指针存放内存中的常量区,只可以读,不能被修改。

3.char类型的指针数组,可以保存多个字符串

     字符串数组的要求有两个:

    (1)该数组是二维的字符数组

    (2)是char类型的指针数组

            char *str[]={“asd”,”fgh”,”ert”};

            用for循环来遍历每个字符串

             forint i=0;i<3;i++{printf(“%s ”,str[i])};

注意: 

1不能修改 字符串的内容,因为每个字符串都在内存的常量区存储(常量的数据只能读,不能修改)

2).   字符串指针变量可以重新被赋值,但是指向会发生改变,如果s重新被赋值的内容是相同的,此时,指向没有发生改变

    

      

3)字符数组不能被整体重新赋值,但是可以改变某个字符!

4.二维的字符数组也可以存放多个字符数组,可以改变某个字符串的某个字符。

原文地址:https://www.cnblogs.com/lyz0925/p/4354809.html