C语言 关于输入输出与结束符“\0”

1.结束符\0

结束符\0 ASCII码为0,即为空字符NULL,占用一个字符位。

所有的字符串操作函数,都会遇0而止

仅有字符数组即char型数组

字符数组的长度要比实际存储字符串的长度至少多1
(int型等其他数组的末尾不需要加\0)

2.输入函数

  1. 使用 scanf函数的%s格式 / gets()函数 输入字符串 ,识别空格/换行符作为输入结束,不需要在输入的字符串末尾加入'\0'
  2. scanf函数的%c格式用来输入单个字符,能够识别空格跟换行符并将其输入,并不同于其他输入方式(其他函数或其他格式)通过空格或换行来识别输入的结束,不需要在输入的字符串末尾加入'\0'为只识别单个字符)
  3. 使用getchar()输入字符串则需要在字符串末尾加入“\0”,否则printfputs函数会因无法识别字符串末尾而输出一大堆乱码。

注意:
由于gets识别换行符\n作为输入结束,因此若scanf完一个整数后,如需使用gets函数,
需要先用getchar接收整数后的换行符,或应在scanf末尾加入\n
 

3.输出函数

puts函数和printf在输出字符串的时候遇到'\0'和'\n'分别是怎么处理的 

  • 如果有多个\0的话,这两个函数均是输出到第一个\0就终止了,
    ‘\0’作为一个字符串结束的标志
  • 连续多个\n就是多次换行
    输出字符串上的功能而言,这两个函数的作用,效果完全一致

C语言 关于输入输出与结束符“\0”_第1张图片

printf和puts的区别

c语言中,puts和printf函数有啥区别?

puts和printf函数的区别如下:

  1. 不同的换行符
    puts()函数会自动在字符串末尾添加一个换行符,这意味着它会自动换行,而printf()函数没有此功能
  2. 输出内容不同
    puts()函数只能输出字符串,不能对输出和转换指令进行标准化,而printf()函数可以

printf和puts的调用格式

1.printf

格式字符串包含三种类型的对象:

(1)字符串常量

(2)格式控制字符串

(3)转义字符

  • 字符串常量按原样输出并在显示中用作提示。输出项在输出表列中给出,格式控制字符串和每个输出项在数量和类型上应一一对应。
  • 格式控制字符串是以%开头的字符串,后跟各种格式控制字符,以指示输出数据的类型、宽度、精度等。

2.puts

(1)puts()函数只能输出字符串,不能输出值或执行格式转换。

(2)字符串可以直接写入puts()函数。例如:如:puts("Hello,world!")。

(3)puts与printf相同,puts()函数的作用与printf语句相同。注意:puts将在输出字符串之后自动输出回车

4.参考资料

参考资料来源:https://baike.baidu.com/item/puts%20%28%29?fromModule=lemma_search-box

参考资料来源:https://baike.baidu.com/item/printf/7467706?fromModule=lemma_search-box

 

你可能感兴趣的:(c语言,数据结构,开发语言)