C语言字符和字符串的输入与输出

article/2025/4/24 1:46:16

C语言

一、输入单个字符

1、scanf函数输入单个字符

C语言scanf输入时缓冲区问题
scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格、回车这类字符,当你用%d接收时是不会影响的,但是用%c就会产生错误,这是因为在"%c"输入时,空格和转义字符均作为有效字符会被%c接收。
例如:

#include <stdio.h>
int main()
{char a,b,c;scanf("%c%c%c",&a,&b,&c);printf("%c,%c,%c",a,b,c);return 0;
} 

运行结果:
在这里插入图片描述

解决方法:
1.在接收第二个数之前清空缓冲区getchar(),getchar()是清空—个字符,如果缓冲区还有多余的字符则会被正常使用
例如:

#include <stdio.h>
int main()
{char a,b,c;scanf("%c",&a);      scanf("%c",&b); printf("a=%c,b=%c",a,b);return 0;
} 

运行结果:
请添加图片描述
这里我们预想的效果应该是先输入a的值回车后输入b的值。但是通过运行结果可以发现,当我们输入a的值回车后,直接跳过了输入b的值。这是因为scancf不是直接从键盘上获取数据,而是通过缓存区来获取。scanf会先去看缓冲区中是否有数据,如果有就直接拿走,并不需要键盘输入。如果没有就需要等待键盘输入数据到缓冲区,然后再从缓冲区中取走数据。
请添加图片描述
这里我们按了键盘上的1和回车,这时1\n(回车就是\n也算个字符)就被传入了缓冲区,而scanf函数只会取走\n之前的数据,缓冲区就遗留了个\n。当第二个scanf函数开始读取时就直接从缓冲区中取走了\n,就导致我们没来得及输入就直接跳过了。

getchar的作用是读取一个字符,也是输入函数,所以和scanf读取数据的过程一样,都是从缓存区中获取数据。为了不跳过第二个scanf,我们就可以在接收第二个数之前清空缓冲区,用getchar将缓存区的\n取走。

#include <stdio.h>
int main()
{char a,b,c;scanf("%c",&a); getchar();    // 清空缓存区,把\n清除      scanf("%c",&b); printf("a=%c,b=%c",a,b);return 0;
} 

运行结果:
请添加图片描述

2.在%c之前加入空格,空格可以吸收回车符、空格。如果是在循环中多个scanf输入多个字符,建议使用",“进行隔开,并且在键盘输入的时候也要使用”,"
例如:

#include <stdio.h>
int main()
{char a,b,c;scanf("%c %c %c",&a,&b,&c);printf("%c,%c,%c",a,b,c);return 0;
} 

运行结果:
请添加图片描述

2、getchar函数输入单个字符

#include <stdio.h>        
int main()
{printf("Please input two character: ");int ch=getchar();         //从缓存区中读取1个字符并赋给ch putchar(ch);			  //输出字符putchar('\n');putchar(getchar());      //从缓存区中读取1个字符并输出putchar('\n');
}                         

Please input two characters: ok↙
o
k

注:getchar()的返回值类型为int()

二、输入字符串

1、scanf函数输入字符串

#include <stdio.h>
int main()
{char str[20];  //str是string的缩写, 即字符串printf("请输入字符串:");scanf("%s", str);  /*输入参数是已经定义好的“字符数组名”, 不用加&,因为在C语言中数组名就代表该数组的起始地址*/printf("输出的结果是:%s\n", str);return 0;
}

例1.
请输入字符串:天天开心
输出的结果是:天天开心

例2.
请输入字符串:i am working
输出的结果是:i

出现例2的原因:
原因是用 scanf 输入带空格的字符串时系统将空格作为输入字符串之间的分隔符。也就是说,只要一“敲”空格,系统就认为当前的字符串已经结束,接下来输入的是下一个字符串,所以只会将空格之前的字符串存储到定义好的字符数组中。
那么这种情况该怎么办?
解决方法:
以空格为分隔符,数有多少个字符串,有多少个字符串就定义多少个字符数组。比如“i am working”有两个空格,表示有三个字符串,那么就定义三个字符数组:

# include <stdio.h>
int main()
{char str1[20], str2[20], str3[20];printf("请输入字符串:");scanf("%s%s%s", str1, str2, str3);printf("输出的结果是:%s %s %s\n", str1, str2, str3);  //%s间要加空格return 0;
}

请输入字符串:i am working
输出的结果是:i am working

2、gets函数输入字符串

在<string.h>头文件中

字符串输入函数gets
格式:gets(字符数组)
功能:从键盘键入以回车结束的字符串放入字符数组中,并自动加’\0’
说明:输入串长度应小于字符数组维数,字符串中可以包含空格

字符串输出函数puts
格式:puts(字符数组)
功能:向显示器输出字符串(输出完,自动换行,即用’\n’替’\0’)
说明:字符数组必须以’\0’结束

#include <stdio.h>
#include <string.h>
int main()
{char str[20];printf("请输入字符串:");gets(str);printf("请输出字符串:");puts(str);return 0;
}

请输入字符串:so cute
请输出字符串:so cute


http://chatgpt.dhexx.cn/article/mF8d3bIQ.shtml

相关文章

【C语言--字符数据的输入输出】

1、putchar函数–字符输出函数 功能是在显示器上输出单个字符。形式为&#xff1a;putchar(字符变量); 例如&#xff1a; putchar(A);//输出大写字母A putchat(x);//输出字符变量x的值2、getchar函数–键盘输入函数 功能是从键盘上输入一个字符。形式为&#xff1a;getchar(…

C语言打印输出字符串的几种方法

思路分析 知识点补充 1&#xff0c;在C语言中&#xff0c;一维数组的数组名实际上就是指向数组首项元素的指针。 2&#xff0c;如果指针p已经指向一个字符串&#xff0c;判断字符串是否结束&#xff0c;一般采用while(*p!\0)的办法。 以打印输出arr[30]"hello world&qu…

C语言——字符串、打印字符串的三种方式

文章目录 前言一、字符串1.字符串常量2.注意 scanf() 读取字符串例如&#xff0c;scanf() 输入中间有空格的字符串后观察打印情况 3.sizeof()函数计算字符串尺寸&#xff0c;strlen()函数计算字符串长度例子&#xff1a; 4.字符数组定义和初始化(1)传统的字符集合赋值&#xff…

C语言 格式输入输出与字符输入输出

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、 格式输入输出 1、格式输出——printf函数 &#xff08;1&#xff09;格式 printf("格式控制"&#xff0c;输出列表项)&#xff1b; 格式控制分为格式声明&#xff08;%和格式字符&am…

jmeter+ant+jenkins-接口自动化持续集成(与之类似的postman+newman+Jenkins接口自动化持续集成)

jmeterantjenkins-接口自动化持续集成 jmeterantjenkins-接口自动化持续集成基本安装配置Ant配置Jmeter配置Jenkins&#xff0c;构建持续集成 jmeterantjenkins-接口自动化持续集成 Jmeter可以做接口测试&#xff0c;也能做压力测试&#xff0c;而且是开源软件 Ant是基于Java的…

MAC jmeter+ant 实现接口测试并将接口测试报告以邮件的形式发出-超详细

最近项目组涉及到接口测试&#xff0c;然后自己想着如何输出接口测试的报告&#xff0c;经过自己的了解&#xff0c;发现测试行业中每个公司每个测试人员输出的方式都不一样的。常规的有以下几种 使用表格的形式&#xff0c;手动去写&#xff0c;以总结的形式&#xff0c;给到…

jmeter+ant+jenkins接口自动化测试框架搭建

一个完整的接口测试框架需要支持接口的自动执行&#xff0c;自动生成测试报告&#xff0c;以及持续集成。Jmeter可以做接口测试&#xff1b;Ant是基于Java的构建工具&#xff0c;完成脚本执行并收集结果生成报告&#xff0c;可以跨平台&#xff1b;Jenkins是持续集成工具。将这…

windows下,jmeter+jenkins+ant接口自动化测试环境搭建

&#xff08;一&#xff09;jdk安装与配置 利用jmeter进行接口自动化&#xff0c;需要用到jdk&#xff0c;因此需要下载并安装jdk&#xff0c;下载jdk并配置好环境变量&#xff08;可参考网上教程&#xff09; &#xff08;二&#xff09;ant安装与配置 1.下载ant&#xff0…

Jmeter+Jenkins+Ant接口自动化测试平台搭建(Mac)输出测试报告(二)

1、首先将apache-jmeter-3.2extras下面的ant-jmeter-1.1.1的jar包复制到ant的lib目录下 复制到你安装ant目录下的lib文件里(这里就不贴图里) /usr/local/Cellar/ant/1.10.6/libexec/lib 提示&#xff1a;如果大家下载完ant后找不到路径&#xff0c;可以在终端输入命令&#x…

用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

前言 小伙伴们&#xff0c;用python做接口自动化是不是写代码比较繁琐&#xff0c;而且没有python代码基础的小伙伴根本无从下手对吧&#xff01;今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 安装 1、安装JDK&#xff0c;配置java环境变量&#xff08;安装过程…

jmeter——jmeter+ant生成优化的HTML接口自动化测试报告

jmeterant生成优化的HTML测试报告 一、最终实现效果展示二、实现方式1、环境搭建2、实现原理3、报告生成方式 三、实现步骤1、jar包转移&#xff1a;实现ant调用jmeter脚本2、jmeter插件包处理3、build文件的创建和修改4、报告展示信息调整5、html报告样式优化 四、遗留问题、 …

不会Python,用JMeter+ANT进行接口自动化测试,同样生成HTML测试报告,拿下20k轻轻松松

用python做接口自动化是不是写代码比较繁琐&#xff0c;而且没有python代码基础的小伙伴根本无从下手对吧&#xff01;今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 一、安装 1、安装JDK&#xff0c;配置java环境变量&#xff08;安装过程略&#xff09; 2、安…

jmeter+csv+ant接口自动化测试--利用apache-ant执行测试用例并生成HTML格式测试报告(二)

在上一篇博文中介绍了如何使用csv文件来批量管理接口&#xff0c;本篇博文介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告。 ①下载安装apache-ant-1.10.0&#xff0c;配置环境变量 如下方式检验安装是否成功&#xff0c;若展示如下即安装成功。 ②安装好ant后&am…

测试萌新必看!用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

【文章末尾给大家留下了大量的福利】 小伙伴们&#xff0c;用python做接口自动化是不是写代码比较繁琐&#xff0c;而且没有python代码基础的小伙伴根本无从下手对吧&#xff01;今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 01 安装 1、安装JDK&#xff0c;…

小白必看!用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

小伙伴们&#xff0c;用python做接口自动化是不是写代码比较繁琐&#xff0c;而且没有python代码基础的小伙伴根本无从下手对吧&#xff01;今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 01 安装 1、安装JDK&#xff0c;配置java环境变量&#xff08;安装过程略…

jmeter+ANT接口自动化环境的搭建以及测试报告的优化

1.安装JDK 下载地址&#xff1a;Java Downloads | Oracle 配置环境变量&#xff1a; JAVA_HOME C:\Program Files\Java\jdk1.8.0_171 path ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CALSS_PATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.ja…

Jmeter+jenkins+Ant接口持续集成测试

Ant的介绍 apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具&#xff0c;大多用于Java环境中的软件开发。由Apache软件基金会所提供。 Ant它有以下的优点。跨平台性。Ant是纯Java语言编写的&#xff0c;所以具有很好的跨平台性。操作简单。Ant是…

Windows下搭建ant+jenkins+jmeter自动化接口测试框架(详细篇)

引言 为什么要持续集成? 1、减少风险 2、减少假定 3、减少重复过程 4、增强项目的可见性 5、持续集成可以带来两点积极效果&#xff1a; (1)有效决策&#xff1a;持续集成系统为项目构建状态和品质指标提供了及时的信息&#xff0c;有些持续集成系统可以报告功能完成度…

搭建jmeter+Jenkins+ant接口自动化测试

这是本人第一次在Jenkins下搭建接口自动化测试&#xff0c;也是一步一步摸索成形&#xff0c;继而满足基本使用要求。 一、前期准备 1.下载jdk&#xff0c;配置环境变量 export JAVA_HOME/brd_devops/jdk1.8.0_161 export JRE_HOME$JAVA_HOME/jre export CLASS_PATH$JAVA_HOME/…

不写一行代码,搭建Jenkins+Jmeter+Ant接口自动化框架

1、安装jmeter&#xff0c;并确认你的jmeter脚本可以跑通&#xff0c;如图所示&#xff1a; 2、安装ant&#xff0c;从http://ant.apache.org/bindownload.cgi下载并确认ant安装成功 3、将Jmeter下面extras目录里面的ant-jmeter-1.1.1.jar文件复制到ant的lib目录下面&#xff0…