设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C语言字符串的输入与输出

发布时间:2022-07-01 11:13 所属栏目:51 来源:互联网
导读:其实在《C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:
  其实在《C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。
  字符串的输出
  在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:
  puts():输出字符串并自动换行,该函数只能输出字符串。
  printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
 
  这两个函数相信大家已经非常熟悉了,这里不妨再演示一下,请看下面的代码:
  #include <stdio.h>
  int main(){
      char str[] = "http://c.biancheng.net";
      printf("%s\n", str);  //通过字符串名字输出
      printf("%s\n", "http://c.biancheng.net");  //直接输出
      puts(str);  //通过字符串名字输出
      puts("http://c.biancheng.net");  //直接输出
      return 0;
  }
 
  第一次输入的字符串被 gets() 全部读取,并存入 str1 中。第二次输入的字符串,前半部分被第一个 scanf() 读取并存入 str2 中,后半部分被第二个 scanf() 读取并存入 str3 中。
 
  注意,scanf() 在读取数据时需要的是数据的地址,这一点是恒定不变的,所以对于 int、char、float 等类型的变量都要在前边添加&以获取它们的地址。但是在本段代码中,我们只给出了字符串的名字,却没有在前边添加&,这是为什么呢?因为字符串名字或者数组名字在使用的过程中一般都会转换为地址,所以再添加&就是多此一举,甚至会导致错误了。
 
  就目前学到的知识而言,int、char、float 等类型的变量用于 scanf() 时都要在前面添加&,而数组或者字符串用于 scanf() 时不用添加&,它们本身就会转换为地址。读者一定要谨记这一点。
 
  至于数组名字(字符串名字)和地址的转换细节,以及数组名字什么时候会转换为地址,我们将在《数组到底在什么时候会转换为指针》一节中详细讲解,大家暂时“死记硬背”即可。
  其实 scanf() 也可以读取带空格的字符串
  以上是 scanf() 和 gets() 的一般用法,很多教材也是这样讲解的,所以大部分初学者都认为 scanf() 不能读取包含空格的字符串,不能替代 gets()。其实不然,scanf() 的用法还可以更加复杂和灵活,它不但可以完全替代 gets() 读取一整行字符串,而且比 gets() 的功能更加强大。比如,以下功能都是 gets() 不具备的:
  scanf() 可以控制读取字符的数目;
  scanf() 可以只读取指定的字符;
  scanf() 可以不读取某些字符;
  scanf() 可以把读取到的字符丢弃。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读