您好,欢迎来到微智科技网。
搜索
您的当前位置:首页C语言中字符串的处理方式

C语言中字符串的处理方式

来源:微智科技网

 

交流纽带”

                              --《C语言程序设计 现代方法》

 

  写多了 Java 代码,对 String 类 很是喜爱,可惜经典的 C 语言没有。。。最近在做程序过程中,发现对C语言字符串的处理很模糊,一会儿用数组,一会儿用指针,一会儿又引入 string.h。。。于是决定总结一下C语言中字符串的处理,一则作为笔记,二则作为技术交流和大家分享。

 

3. 字符串的读写

 

  3.1 用 printf 函数和 puts 函数写字符串

  %s 允许 printf 函数写字符串。如:

char str[] = " Are we having fun yet? " ; printf( " Value of str: %s\n " , str);

如果只显示字符串的一部分,可以用 %.ps。这里的 p 是要显示的字符数量。语句

printf( " %.6s\n " , str);

会显示出

Are we

  C函数库还提供puts函数。

puts(str);

  

  3.2 用 scanf 函数和 gets 函数读字符串

  在 scanf 函数调用中,不需要在 str 前添加运算符 &。因为 str 是数组名,编译器会自动把它当作指针来处理。调用时,scanf 函数会跳过空白字符,然后读入字符,并且把读入的字符存储到 str 中,知道遇到空白字符为止。scanf 函数始终会在字符串末尾存储一个空字符。用 scanf 函数读入字符串永远不会包含空白字符。因此,scanf 函数通常不会读入一整行输入。换行符会使 scanf 函数停止读入,空格符或制表符也会产生同样的效果。可以参考下面的例子:

#include < stdio.h >
#define STR_LEN 80
int main() { char str[STR_LEN + 1 ]; printf( " input a string: " ); scanf( " %s " , str); printf( " String inputed is:%s\n " , str); return 0 ; }

 

运行结果如下:

Input a string : this is a string String is : this

为了每次读入一整行输入,可以使用 gets 函数。类似于 scanf 函数,gets 函数把读入的字符放到数组中,然后存储一个空字符。然而,在其他方面 gets 函数有些不同于 scanf 函数:

 

  (1) gets 函数不会在开始读字符串之前跳过空白字符( scanf 函数会跳过)。

  (2) gets 函数会持续读入直到找到换行符才停止(scanf 函数会在任意空白字符处停止)。

  此外,gets 函数会忽略掉换行符,而不会把它存储到数组中,用空字符代替换行符。

 

  3.3 逐个字符读字符串

  因为 scanf 函数和 gets 函数都有风险且不够灵活,C 程序员经常会编写自己的输入函数。通过每次一个字符的方式来读入字符串。下面是自己编写的读取字符串的函数 read_line():

返回之前,read_line 函数在字符串的末尾放置了一个空字符。就像 scanf 函数和 gets 函数一样,标准函数会自动在输入字符串的末尾放置一个空字符串。然而,如果自己写输入函数,必须要考虑到这一点。

转载于:https://www.cnblogs.com/kungfupanda/archive/2012/12/04/2801957.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务