在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
1.scanf("%s",str)和gets(str)
scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)只读到输入字符的空格或回车处,而gets(str)读到回车处结束,所以当句子中单词由空格分开时要用后者来输入,如下图所示:
需要强调一点,scanf("%s",str)在遇到'\n'(回车)或' '(空格)时输入结束,但'\n'(回车)或' '(空格)停留在出入缓冲区,如处理不慎会影响下面的输入;gets(str)遇到'\n'(回车)时输入结束,但'\n'(回车)已被替换为'\0',存储于字符串中,输入缓冲中没有遗留的'\n'(回车),不会影响后续的输入。测试程序的代码为:
View Code
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
//freopen("//home//jack//jack.txt","r",stdin);
char str[80];
char ch;
cout<<"1、请输入一个没有空格的字符串:"<<endl;
scanf("%s",str);
cout<<"用scanf(\"%s\",str)输入的字符串为:"<<str<<endl;
cout<<"再输入一次作为对比:"<<endl;
while((ch=getchar())!='\n'&&ch!=EOF);
gets(str);
cout<<"用gets(str)输入的字符串为:"<<str<<endl;
cout<<"2、请输入一个有空格的字符串:"<<endl;
scanf("%s",str);
cout<<"用scanf(\"%s\",str)输入的字符串为:"<<str<<endl;
cout<<"再输入一次作为对比:"<<endl;
while((ch=getchar())!='\n'&&ch!=EOF);
gets(str);
cout<<"用gets(str)输入的字符串为:"<<str<<endl;
return 0;
}
其中while((ch=getchar())!='\n'&&ch!=EOF);是处理输入缓存中的遗留的办法;fflush(stdin)方法对某些编译器不适用,不是标准C支持的函数。
2、printf(“%s”,str)和puts(str)
先看如下代码:
View Code
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
//freopen("//home//jack//jack.txt","r",stdin);
char str1[80]="hello";
cout<<"用printf(\"%s\",str1)输出的字符串为:";
printf("%s",str1);
cout<<"用puts(str1)输出的字符串为: ";
puts(str1);
char str2[80]="hello world";
cout<<"用printf(\"%s\",str2)输出的字符串为: ";
printf("%s",str2);
cout<<"用puts(str2)输出的字符串为: ";
puts(str2);
return 0;
}
从运行结果可以看出,printf(“%s”,str)和puts(str)均是输出到'\0'结束,遇到空格不停,但puts(str)会在结尾输出'\n',printf(“%s”,str)不会换行。printf(“%s\n”,str)可以替换puts(str)。
完。
相关文章
- 本篇文章是对C++中sprintf的错误进行了详细的分析介绍,需要的朋友参考下...2020-04-25
Eclipse对printf()不能输出到控制台的快速解决方法
Eclipse对printf()不能输出到控制台的快速解决方法。需要的朋友可以过来参考下,希望对大家有所帮助...2020-04-25php中echo、print、print_r、printf、sprintf、var_dump用法介绍
文章介绍了echo、print、print_r、printf、sprintf、var_dump,有需要了解的朋友可参考一下。 一、echo 定义和用法 PHP echo() 函数输出一个或多个字符串。 ech...2016-11-25- 在本篇文章里小编给大家分享了关于C/C++语言printf命令使用方法和步骤,对此有需要的朋友们学习下。...2020-04-25
- 下面小编就为大家带来一篇c语言printf实现同一位置打印输出的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- sprintf() 函数用于把格式化的字符串写入一个变量中。 定义和用法 sprintf() 函数用于把格式化的字符串写入一个变量中。 语法 sprintf(format,arg1,arg2,arg++...2016-11-25
- C中格式字符串printf()的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。各项的意义介绍如下...2020-04-25
- 这篇文章主要介绍了C++中sprintf使用的方法与printf的区别,实例分析了sprintf与printf的具体用法及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言中printf输出的相关函数总结,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 以前听老师讲过sprintf()函数需要使用echo方 法才可以讲格式化后的字符串显示输出,下面我来看一下简单的方法。 我在阅读一些资料,书籍的时候总是总是会看到如下这...2016-11-25
- php print() 与printf()函数教程 定义和用法 print( )函数输出一个或多个字符串。 语法 print(strings) ParameterDescriptionstringsRequired. One or more strin...2016-11-25
- 本文主要介绍了C语言中scanf与scanf_s函数的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-18
- 这篇文章主要为大家详细介绍了wxWidgets实现无标题栏窗口拖动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别
以下是对C语言中printf(),sprintf(),scanf(),sscanf()的用法以及区别进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25- sprintf将字串格式化。语法: string sprintf(string format, mixed [args]...);传回值: 字串函式种类: 资料处理内容说明 本函式用来将字串格式化。参数 form...2016-11-25
- sprintf与print 及printf都是输出字符串,但它们在细节中会有很大的区别,下面本文章就来重点介绍这个问题。 下面是一个示例:四舍五入保留小数点后两位 ...2016-11-25
- sprintf()函数在很多地方有很大的用处,就是我最近写的一个微信自动回复接口一下,其中有这么一段代码。 代码如下 复制代码 $postObj = simple...2016-11-25
- 这篇文章主要介绍了完美解决go Fscanf 在读取文件时出现的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-22
- 这篇文章主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要为大家详细介绍了wxWidgets自定义按钮的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25