惧留孙网

juliusun.com

在线教程 > C语言教程 > 字符串

字符串

第 22/50 节 冥河C语言教程


C语言中的字符串,是以'\0'字符结尾的字符数组。通常字符串用写法是用双引号引起来,如"abc"。C语言在处理双引号引起来的字符串时,是保留字符串内所有字符,作为数组元素列表,同时,在最后补上'\0'字符。如"abc"编译器在处理时是字符数组{'a','b','c','\0'}。

既然字符串是数组,定义字符串时,当然可以用字符数组的语法,如char s[4] = {"abc"};,abc三个字符加上'\0'共4个字符。

C语言语法规定,字符串初始化字符数组时,花括号可以省略,直接写成char s[4] = "abc";。

因为编译器在双引号内最后添加了'\0'字符,相当于已经列举出了所有数组元素值,这个例子还可以直接写成char s[ ] = "abc";。

数组名就是字符串地址。数组名s等同于&s[0]。

介绍两个关于字符串的函数,puts和gets。puts作用是输出字符中,gets作用是输入字符串。使用格式如下:

puts(字符串地址) gets(字符串地址)

puts(字符串地址)效果和printf(字符串地址)或printf("%s",字符串地址)类似。部分编译器输出字串之后,自动追加\n。

gets(字符串地址)效果和scanf("%s",字符串地址)类似。不过很多地方gets优于scanf。由于不同编译器实现这两个函数机制不同,这里不作深入解释。

我们知道了字符串的原理,我们就可以操作字符串了。我们完成这样一个功能:输入一个字符串,字符个数大于等于4个时,只保留前4个字节并输出。字符个数小于4个时,全部输出。

我们可以这样解决:既然字符串以'\0'结尾,我们保留前4个字符,只要将第5个字符,也就是数组下标为4的元素值设置成'\0'就可以了。

假设字符数组名为s,输入4个字符,s[4]的元素自动为'\0',重新赋值'\0'没有影响。输入字符小于4个,由于s[4]之前已经有了'\0',s[4]为'\0'对字符串无影响。个数大于4,s[4]赋值为'\0'就提前结束了字符串。代码如下:


  1. #include<stdio.h>
  2. int main( )
  3. {
  4. char s[20]; //由于'\0'需要占用一个字节,所以能保证接收19个字符
  5. gets(s); //或scanf("%s",s);
  6. s[4] = '\0'; //下标为4,数组第5个字符赋值为'\0'
  7. puts("截断字符串,最多取前4个字符的结果为:");
  8. puts(s); //也可与上一条语句合成类似printf("结果为:\n%s",s)的语句
  9. getchar( ) ;getchar( ) ; //使程序暂停一下
  10. return 0;
  11. }

超过4个字符效果类似如下图:

Pic

不足4个字符效果类似如下图:

Pic

效果图仅供参考。

作者:冥河 QQ:3304576112
交流QQ群:554701039 C语言讲课群
本教程内容由本站保留版权,请勿复制传播
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的