🚩write in front🚩
🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~周榜192﹣总榜832~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTO创作者、创作周榜41⇿全网访问量40w+🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-謓泽的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-『C+1』系列_謓泽的博客-CSDN博客🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
0.目录
🚩write in front🚩
①.前言
②.puts()字符串输出函数
自动换行
结束符"\0"
③.gets()字符串输入函数
④.gets()和scanf()区别
①.前言
在前面的一篇[C系列]当中博主写过一篇字符数据的输入和输出,不知道你学会了没有。如果还有小伙伴没有看的话可以去看看哟。
链接-『C语言』getchar() & putchar() 〖input & output〗_謓泽的博客-CSDN博客
putchar()和getchar()函数都只能对①个字符进行操作,如果张三要进行一个字符串的操作就会显得比较麻烦。于是C语言还提供了两个对字符串进行操作的函数。
- 🍅puts()字符串输出函数。
- 🍅gets()字符串输入函数。
对于这些输入函数和输出函数我们还是有必要知道的,因为可以说在编写程序的时候用到的最多的就是输入函数和输出函数了。
②.puts()字符串输出函数
字符串输出可以使用puts()函数,作用是输出一个字符串到运行界面上。
puts()语法格式如下↓
int puts ( const char * str );
在使用puts()函数的时候,我们需要在程序当中添加对应的头文件#incnlude<stdio.h>
将 str 指向的C语言字符串写入标准输出(stdout),并自动添加一个换行符('\n')
函数从指定的地址 (str) 开始复制,直到它到达结束的空字符('\0'),这个终止空字符不会复制到流中。注意:str 是字符指针类型,可以用来接收要输出的字符串或(数组)
自动换行
puts()函数的输出与printf()的输出是有所不同的,puts()函数会总动添加一个自动换行('\n')的操作。而printf()函数不会这样。
下面我们用代码来演示下代码示例如下↓
#include<stdio.h> int main(void) { puts("yysyCyuyanyyds!"); printf("yysyCyuyanyyds!"); return 0; }
运行结果🖊
结束符"\0"
注意:当我们给printf()或puts()输出函数加上"\0"后,后面的字符便不会再输出遇到"\0"便停止了,'\0'用作字符串当中的结束符,遇到结束符的时候后面字符便不会再输出了。
示例代码如下↓
#include<stdio.h> int main(void) { puts("yysyCyuyan\0yyds!"); printf("yysyC\0yuyanyyds!"); return 0; }
运行结果🖊
yysyCyuyan
yysyC
说明:编译器会在字符串常量的末尾自动添加'\0'结束符,这也就说明了puts()函数会在输出字符串的常量时候最后进行换行原因的操作了。
经过调试后的光标直接换到下一行('\n')当中去。
③.gets()字符串输入函数
字符串输入可以使用gets()函数,作用是将读取的字符串保存至形式参数当中去的。
gets()语法格式如下↓
char * gets ( char * str );
在使用gets()函数的时候,我们需要在程序当中添加对应的头文件#incnlude<stdio.h>
参数如下↓
str→指向一个内存块(char数组)的指针,其中读取的字符串被复制为一个C语言的字符串。
例如:定义字符串数组string用gets()来进行输入puts()再来进行输出,示例代码如下↓
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { char string[10] = { 0 }; gets(string);//输入 puts(string);//输出 return 0; }
运行结果🖊
Cyuyan
Cyuyan
④.gets()和scanf()区别
scanf():不能接受空格、制表符Tab、回车等; 当遇到回车Tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。 可以读取所有类型的变量。
gets():能够接受空格、制表符Tab和回车等; 可接受回车键之前输入的所有字符,并用'\n'替代'\0',回车键不会留在输入缓冲区中 ,用到读取字符串,用回车结束输入。
下面我用代码来演示下,它们最主要的区别如下↓功能:实现strlen()功能(统计长度)
首先是用scanf()函数如下↓
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { char enter[20] = { 0 }; char *etter1 = enter; unsigned int Count = 0; printf("请输入字符串:"); scanf("%s", &enter); //1.输入条件以完成! while (*etter1 != '\0') { Count++; *etter1++; } printf("The total number of input strings:%d\n", Count); return 0; }
接着是用gets()函数如下↓
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(void) { char enter[20] = { 0 }; char *etter1 = enter; unsigned int Count = 0; printf("请输入字符串:"); gets(enter); //1.输入条件以完成! while (*etter1 != '\0') { Count++; *etter1++; } printf("The total number of input strings:%d\n", Count); return 0; }
分析如下↓
分别用scanf()函数和gets()函数进行输入,发现运行结果都是一样。
发现上面两组的区别没有,当我们是gets()函数进行输入的话,它打印的最终长度是④
而当我们去使用scanf()函数进行输入的话,它打印最终的长度是②
而这里和上面的区别就是我们在这里把空格也输入进去了。
当我们是gets()的时候它是包括空格的长度直接打印。
而当我们是用scanf()的时候它是遇到空格直接就停止了后面无论输入没有字符都不会再进行计算(包括字符)
我们来看看它们的调试结果如下↓
以上就是gets()输入函数和scanf()输入函数的分析,相信当你看完这个会更加了解它们的作用以及区别到底在哪里了。