【难点总结】字符、字符串、字符数组与字符类型指针(上)

         最近开始刷leetcode,使用C语言时,在字符数组、字符串指针常遇到困难,特地拿来当年学的入门书——谭浩强老师的《C程序设计》来重点突破一下,并写下这篇总结。多唠叨一句,现在虽然出现更优秀的书籍,作为一本91年出版的教材有些不合时宜,但是想想近二十年前快退休的谭浩强老师为普及C语言撰写的这本教材,具有其不可磨灭的历史功绩,依然值得后人敬佩。

      闲话少说,正文开始!

 

 

 

  • 字符型数据

字符型数据可以分为字符常量字符变量两部分。

字符常量

就是常见的以单撇号括起来的单个字符,包括英文字母、数字和一些符号,均在ASC2码中。如 ‘a’、’G‘、’¥‘、’+‘。

注:特殊形式的字符常量——转义字符。如’\n’、’\t’等。

 

 

字符变量(char型变量)

用来存储字符型常量,只能存储一个字符,不能存储字符串。

char c1;

c1 = ‘A’;

 

字符数据以asc码存储,与整数完全一样,所以,字符数据既可以用%c输出,也可以用%d输出。

C语言可以用字符数据与整数进行运算,可以用字符数据和整形数据直接进行相互赋值。

 

字符串常量

一对双引号括起来的字符序列,

“How do you do.”  “Hello”   “$12.7”  “*&* (*   O” 以及“a”

字符串常量后面有’\0’,结束标志。

C语言没有专门的字符串变量,存储字符串,需要用到字符数组。

字符串输出 %s。

 

字符数据的输入输出

putchar()函数 输出字符变量(或整型变量), putchar(a)

getchar()函数 从终端输入单个字符, getchar() 以Enter键结束输入,接收空格字符

scanf()函数以空格键 Tab键 回车键结束输入。

 

字符数组

用来存放字符数据的数组叫做字符数组,数组中一个元素存放一个字符。

 

定义:char a[10];

初始化:char a[10] = {‘I’, ’ ‘, ’a’, ’m’, ’ ‘, ‘a’, ‘ ‘, ‘b’, ‘o’, ‘y’};

        如果花括号中字符数目没有填充满,则以’\0’填补。

char a[] = {‘I’, ’ ‘, ’a’, ’m’, ’ ‘, ‘a’, ‘ ‘, ‘b’, ‘o’, ‘y’};

可以不指定数组长度。

char a[]={“I am a boy”};

     或:char a[]=”I am a boy”;

 

 

 

二维数组初始化:char a[8][8] = {{' ','+','-','*','/','(',')','@'},

                                                  {'+','>','>','<','<','<','>','>'},

                                                  {'-','>','>','<','<','<','>','>'},

                                                 {'*','>','>','>','>','<','>','>'},

                                                 {'/','>','>','>','>','<','>','>'},

                                                 {'(','<','<','<','<','<','=',' '},

                                                 {')','>','>','>','>',' ','>','>'},

                                                {'@','<','<','<','<','<',' ','='}};    (来自严蔚敏教材表达式求值算符优先级数组)

需要注意的是,C语言处理字符串,以一维字符数组的形式存储和处理。

 

用字符数组输出字符串:   

char a[]=I am a boy.

printf(%s,a);

printf中输出项是字符数组名。

 

用字符数组输入字符串:

   scanf(%s,c);  c为已定义好的字符数组,输入长度不可超过数组长度。

   

char str1[4], str2[4], str3[5];

scanf(%s%s%s,str1,str2,str3);是可以的   scanf不接收空格。

 

另外:puts(str) 输出字符串  puts将字符串结尾的\0转化为\n,所以puts输出完后自动换行。字符数组str中可以有转义字符。

gets(str)将字符串(包含最后的\0)送到地址str处

注意:puts和gets函数参数只能是一个。

 

字符串(字符数组)常用到的函数:

    strcat(str1, str2),将地址str2字符串粘贴到str1后面,str1字符数组不能太小。

    strcpy(str1,str2),字符串复制

    strlen(str1)字符串实际长度

char *p=strstr(str1,str2),字符串str2第一次出现在str1中的位置,没有则返回空指针。

 

下一篇主要总结字符数组与字符串指针

主要参考资料: 谭浩强《C程序设计》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值