在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

爱美之心HH

爱美之心HH

2016-02-19 11:10

有了下面这个在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈教程,不懂在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈的也能装懂了,赶紧get起来装逼一下吧!

1.scanf("%s",str)和gets(str)

scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)只读到输入字符的空格或回车处,而gets(str)读到回车处结束,所以当句子中单词由空格分开时要用后者来输入,如下图所示:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

需要强调一点,scanf("%s",str)在遇到'n'(回车)或' '(空格)时输入结束,但'n'(回车)或' '(空格)停留在出入缓冲区,如处理不慎会影响下面的输入;gets(str)遇到'n'(回车)时输入结束,但'n'(回车)已被替换为'',存储于字符串中,输入缓冲中没有遗留的'n'(回车),不会影响后续的输入。测试程序的代码为:

代码如下:

View Code

#includeiostream
#includestdio.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)输入的字符串为:"strendl;
  cout"再输入一次作为对比:"endl;
  while((ch=getchar())!='n'&&ch!=EOF);
  gets(str);
  cout"用gets(str)输入的字符串为:"strendl;
  cout"2、请输入一个有空格的字符串:"endl;
  scanf("%s",str);
  cout"用scanf("%s",str)输入的字符串为:"strendl;
  cout"再输入一次作为对比:"endl;
  while((ch=getchar())!='n'&&ch!=EOF);
  gets(str);
  cout"用gets(str)输入的字符串为:"strendl;
  return 0;
}

其中while((ch=getchar())!='n'&&ch!=EOF);是处理输入缓存中的遗留的办法;fflush(stdin)方法对某些编译器不适用,不是标准C支持的函数。

2、printf(“%s”,str)和puts(str)

先看如下代码:

代码如下:

View Code

#includeiostream
#includestdio.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;
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

从运行结果可以看出,printf(“%s”,str)和puts(str)均是输出到''结束,遇到空格不停,但puts(str)会在结尾输出'n',printf(“%s”,str)不会换行。printf(“%sn”,str)可以替换puts(str)。

完。

展开更多 50%)
分享

猜你喜欢

在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

编程语言 网络编程
在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

MooTools教程(9):输入过滤-字符串

Web开发
MooTools教程(9):输入过滤-字符串

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JavaScript窗口及输入输出

Web开发
JavaScript窗口及输入输出

字符串分割

编程语言 网络编程
字符串分割

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

复制字符串中的字符

编程语言 网络编程
复制字符串中的字符

字符串格式定义

电脑入门
字符串格式定义

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Oracle 数据库操作技巧集

Oracle 数据库操作技巧集

调整word空格间隔大小及每个空格所占的字符数

调整word空格间隔大小及每个空格所占的字符数
下拉加载更多内容 ↓