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

C语言--gets、puts、scanf、printf函数详细用法与区别(小白也能看懂,看不懂私信骂我) 在写这篇文章之前,我对这些基础的函数总是持有一种似懂非懂的感觉没有太在意,直到我在刷题中遇到了或者就是输入字符总是,至此我专门看了一些大佬的文章,做出了我得理解。 阅读详情

转自:http://www.jb51.net/article/34362.htm

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)。

完。

 

uniapp+coze制作app智能体 使用 UniApp 配合 Coze 平台来开发一个具备 AI 智能体的 App,是一个高效且实用的选择。其核心思路主要有两种:一种是通过,另一种则是通过实现更自主的集成。下面的流程图可以帮你快速了解这两种方案的全貌。下面,我们来详细看看这两种方案分别如何操作。 阅读详情

相关推荐

ArcGIS符号库下载 | 制图规范、三调、1:1万地形图、土地利用总体规划图.....

最近整理了一些符号库 涉及的类型比较多 包含有三调的(二调的也加上去了),一些点线面符号库,1:1万地形图,1:5万土地利用,土地利用总体规划图

qq_43173805的博客 2万+

浅谈freopen用法

众所周知,freopen是一个非常好用的文件输入输出的函数,在各种信息学竞赛中都会有所使用。 至于它的原理嘛。。。。。。本蒟蒻也不知道。 所以本蒟蒻只能在此浅谈其用法. 1.最简单的用法 我这里指的最简单用法,就是它在竞赛中的常用用法了 一句 freopen(&amp;quot;文件名.in&amp;quot;,&amp;quot;r&amp;quot;,stdin); freopen(&amp;quot;文件名.out&amp;quot;,&amp

Rain_morning 3万+

YOLOv8魔改网络后训练全零?别慌,关掉AMP混合精度训练试试

本文探讨了YOLOv8魔改网络后训练出现全零指标的问题,指出AMP混合精度训练与自定义网络结构的不兼容性。通过分析梯度消失现象和AMP工作原理,提供了关闭AMP、调整学习率等解决方案,并建议预防性开发实践以避免类似问题。

weixin_28338005的博客 321

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

scanf(),printf()和gets(),puts()在输入输出字符串时的区别 1.scanf("%s",str)和gets(str) scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)匹配连续的一串非空白字符,遇到空格、tab或回车即结束,字符串前的空白字符没有存入str,只表示输入还未开始(感谢garba

code_or_code 2200

Go-zero微服务实战:从零搭建电商用户系统(含完整代码示例)

本文详细介绍了如何使用go-zero框架从零搭建电商用户系统,包含完整的微服务架构设计、核心功能实现代码示例以及性能优化策略。通过分层架构设计、JWT认证、分布式锁等关键技术,实现高并发、高可用的用户系统,适用于电商平台开发。

weixin_29275257的博客 255

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 325

C语言scanf()和gets()及printf()和puts()的区别

一、scanf()和gets() 1.scanf() 所在头文件:stdio.h 语法:scanf(“格式控制字符串”,变量地址列表); 接受字符串时:scanf(“%s”,字符数组名或指针); 2.gets() 所在头文件:stdio.h 语法:gets(字符数组名或指针); 两者在接受字符串时: 1.不同点: scanf不能接受空格、制表符Tab、回车等; 而gets能够

xingjiarong的专栏 7万+

基于FPGA的TDC延迟链优化与码密度校准方法(1)——原理与实现

本文深入探讨了基于FPGA的时间数字转换器(TDC)延迟链非均匀性问题及其码密度校准方法。通过分析工艺偏差、温度电压影响等根源,详细介绍了码密度测试原理、逐位校准技术及气泡消除算法,并分享了自适应校准策略与多场景应用实践,有效提升TDC测量精度至皮秒级。

kiwi8的博客 488

puts遇到空格无法输出_在输入输出字符串时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...

weixin_32705179的博客 1076

RK3576 Buildroot 双机 ADB 异常排障实录:同版 `boot.img`,一台可识别一台不可识别

进程在跑”不等于“USB 枚举成功”,adbd存活只是必要不充分条件。生产环境中的全局别名可能反向污染系统脚本。shell 命令替换中的字符串问题,必须做字节级验证(od -tx1相比“改环境规避”,核心脚本对输入做鲁棒处理更可长期维护。

小灰灰的博客 209

PyTorch深度学习实战(7)——批大小对神经网络训练的影响

在神经网络中,批( batch )是指一次输入网络进行训练或推断的一组样本。批处理( batch processing )是指将这一组样本同时输入网络进行计算的操作。本节中首先介绍批( Batch )的基本概念,并且介绍批大小在神经网络训练过程中的影响。

盼小辉丶的博客 1万+

C语言中scanf()、printf()、gets()、puts()之间的区别

最近在复习C语言字符串这一块知识点的时候,有几个知识点之前一直混淆了,今天通过网上查找资料在这里总结下我们平时对字符串的一些操作时scanf()、printf()、gets()、puts()之间的区别以及getchar()和putchar()的使用。 1.scanf()和 gets()之间的区别 两者都能接收字符串,且接受字符串的语法如下 scanf(“%s”,字符数组名或指针); get...

4425

【WorkBuddy专栏58】腾讯为什么要「自己打自己」——7款AI智能体产品全景对比与「赛马」逻辑深度拆解

【WorkBuddy专栏57】你的左侧空间不是「日任务清单」——工作空间才是 WB 变聪明的核心秘密

AI人人懂 672

C语言中的scanf、getchar、putchar、gets、puts

C语言

qq_42464322的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【C语言】辨析scanf()、gets()和getchar()函数的关系以及printf()、puts()和putchar()的异同

部分输入输出语句的辨析以及常用格式符的含义和作用说明

weixin_60371270的博客 3538

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言(输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法)

常见的输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法

qq_55829345的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言中的输入输出艺术:深入解析puts/printf与gets/scanf

在C语言编程中,输入输出操作是构建程序与用户交互的基石。puts()和printf()作为标准输出函数,而gets()(尽管已不推荐使用)和scanf()作为标准输入函数,它们共同构成了C语言程序中不可或缺的一部分。本文将深入探讨这些函数的工作原理、使用场景、性能考量、安全性问题以及在现代编程实践中的最佳实践,同时扩展讨论到fgets()和sscanf()等更安全的替代方案。

星途码客的博客 1994

关于scanf、gets、getchar和printf、puts、putchar的组成及功能区别详解

format[,argument...通过不同的输入字符可以来输入其相对应的值。

2302_80700357的博客 1672

C语言scanf(),gets()和getchar以及printf(),puts()putchar()的联系

C语言中scanf()和gets(),printf()和puts()以及getchar()和putchar()之间的联系 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、scanf()和gets()和getchar()二、scanf()和gets()和getchar()不同点总结前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习

weixin_44374608的博客 1674

标准输入输出函数scanf()/gets()/printf()/puts()的功能和区别

这两个函数都是用来从标准输入设备(通常是键盘)读取字符串的,但是它们有一些区别和注意事项。(1)如果你想读取一个不含空格的字符串,或者你想读取一个指定数据类型和长度的输入,你可以使用scanf函数。例如,如果你想读取一个整数,你可以使用scanf(“%d”, &a);如果你想读取一个长度不超过10的字符串,你可以使用scanf(“%10s”, a)。这样可以保证输入的数据符合你的预期,并且不会超出数组的大小。(2)如果你想读取一整行字符串,或者你想读取一个含有空格的字符串,你可以使用gets函数。

我的博客 1316

C语言--输入输出-puchar(),getchar(),sacnf(),printf(),gets(),puts(),ASCII.

3d表示左对齐,占3位 ,当你使用 %d 格式化输出时,数字将以十进制格式打印,不会保留前导零。最常见的方法是使用 ASCII 值,(小写字母的 ASCII 值比对应的大写字母的值大 32)。只读取第一个字符,而剩下的字符会留在输入缓冲区中,等待下一次调用。在读取用户输入时,会阻塞程序的执行,直到用户按下回车键(enter)为止。换行的同时也会读取到“\n“。它会读取输入的所有字符,包括制表符和空格,直到用户按下回车键(即输入换行)在这个示例中,程序会不断读取输入字符,直到用户在终端输入文件结束标志。

XINGXIN 1563

gets()函数

gets()函数 1.描述 C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 gets(str) 约等于 scanf("%s",&str) 会把读到的字符串写入数组,但又不同。 2.区别 scanf("%s",&str) :读到空格便停止。 gets(str) :一直读到敲回车(不管中间是否有空格)。 (区别2) 这里顺便提一下printf() 和

Asuei的博客 3万+
上一篇: C++中delete和delete[]的区别说明
下一篇: 经济萧条时代让我们温暖的10行业(做好准备)
HNFXS985
博客等级 码龄14年 219粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值