首页 > 其他分享 >scanf(),gets(),puts(),fgets()函数的使用

scanf(),gets(),puts(),fgets()函数的使用

时间:2024-06-07 12:05:14浏览次数:23  
标签:puts scanf 字符串 str printf fgets gets 输入

 scanf()

scanf按%d输入数字或%s输入字符串时,忽略空格、回车或制表符等空白字符(被作为数据的分隔符) 

int main()
{
	int a = 0;
	int b = 0;
	char c[12];
	scanf("%s", &c);
	printf("c=%s",c);
	return 0;
}

空格后面的world没有被读进去

加一句scanf语句,world被读走了

int main()
{
	int a = 0;
	int b = 0;
	char c[12];
    printf("请输入一行文本:");
	scanf("%s", &c);
	printf("c=%s",c);
	scanf("%s", &c);
	printf("\nc=%s", c);
	return 0;
}

gets()

gets()可以输入带空格的字符串,以回车符作为终止符,同时将回车符从缓冲区读走,但不作为字符串的一部分,而scanf()不读走回车符,回车符仍留在输入缓冲区中

int main() {
	char str[100]; // 声明一个字符数组来存储输入的字符串
	printf("请输入一行文本:");
	gets(str); // 从标准输入读取一行字符串并存储在str中
	printf("您输入的文本是: %s\n", str);//gets()可以输入带空格的字符串
	return 0;
}

puts()

puts()遇到第一个'\0'时输出结束

#include <stdio.h>
int main() {
	char str[100]; // 声明一个字符数组来存储输入的字符串
	printf("请输入一行文本:");
	gets(str); // 从标准输入读取一行字符串并存储在str中
	printf("您输入的文本是: %s\n", str);//gets()可以输入带空格的字符串
	puts(str);//puts()遇到第一个'\0'时输出结束
	return 0;
}

函数puts()输出字符串简洁,唯一不足是不能像函数printf()那样在输出行中增加一些其他信息(如"请输入"等)并控制输出的格式

gets()与puts()都是c语言的标准输入输出库函数,在使用时只要在程序开始将头文件<stdio.h>包含到源文件中即可

fgets()

gets()与scanf()不能限制输入字符串的长度,很容易引起缓冲区溢出

fgets()更有利设计安全可靠的程序,fgets()是gets()的文件操作版

#include <stdio.h>
int main() {
	char str[100]; // 声明一个字符数组来存储输入的字符串
	printf("请输入一行文本:");
	fgets(str, sizeof(str), stdin); // 从标准输入读取一行字符串并存储在str中
	printf("您输入的文本是: %s\n", str);
	return 0;
}

fgets(str, sizeof(str), stdin);

*这一句是为了限制输入字符串的长度不超过数组大小

标签:puts,scanf,字符串,str,printf,fgets,gets,输入
From: https://blog.csdn.net/2301_79760619/article/details/139523325

相关文章

  • 用fscanf\fprintf fgetc\fputc fgets\fputs实现文件拷贝。
     1.fscanf\fprintf#include<stdio.h>intmain(intargc,constchar*argv[]){FILE*fp=fopen("./1.c","r");if(NULL==fp){perror("fopen");return-1;}FILE*fp1=fopen......
  • 'scanf': This function or variable may be unsafe. Consider using scanf_s instead
    在C++中使用scanf时应注意两点1.导入#include<cstdio>2.将scanf改成scanf_s  VS2022实现查找替换编辑——》查找和替换——》在文件中替换 输入要查找替换的名称 点击全部替换完成......
  • JAVAEE之文件IO_数据流概念,字节流:InputStream、OutputStream,字符流:reader、writer,及实
    什么是数据流 顾名思义,I表示input,O表示output,也就是输入输出流,主要是在程序与文件之间,用于传输数据的通道。既然要传输数据,那么我们需要理解文件和程序之间哪种方向的传输是输入流,哪种传输作为输出流?我们可以举一个例子,如下图所示: IO流是JavaIO中的核心概念。流......
  • 调用三方接口,outputStream.write传参数中参数怎么写,在转化成字节数组之前,是A=a&B=b的
    当您调用第三方接口并通过OutputStream.write()方法发送参数时,如果接口期望的是application/x-www-form-urlencoded类型的参数(常见于POST请求中提交表单数据),那么您确实需要将参数转换成A=a&B=b这样的格式,然后再将这个字符串转换成字节数组。以下是转换和发送这种类型参数的步骤:......
  • 调用三方接口,outputStream.write传参数中参数怎么写
    当您调用一个第三方接口并需要使用OutputStream.write()方法发送数据时,您通常需要将数据转换为字节格式,因为write()方法接受的是字节(byte)、字节数组(byte[])或字节数组的一个子序列作为参数。以下是几种常见的情况和相应的示例:发送字节数组:如果您已经有了一个字节数组,您可以直接......
  • C 语言中的 sscanf 详解
    一、函数介绍函数原型:intsscanf(constchar*str,constchar*format,...);返回值:成功返回匹配成功的模式个数,失败返回-1。RETURNVALUEThesefunctionsreturnthenumberofinputitemssuccessfullymatchedandassigned,whichcanbefewerthanprovi......
  • 无法AC,关于使用fgets碰到的问题——末尾多一个换行符
    题目是输入一串字符串,包含空格,里面有多个单词,将每个单词翻转输出,并且单词之间的空格要与原文一致。写的时候没有使用string的输入,而是选择了char数组的输入。样例测试helloworld->ollehdlrow是没有问题的,就以为没问题,但是一直通不过。调试的时候,变量也是有些神奇,不过这个是系......
  • 蓝桥杯-航班时间(简单写法+sscanf的应用)
    小h前往美国参加了蓝桥杯国际赛。小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要......
  • 当字符遇上 scanf() 要当心
    当字符遇上scanf()要当心看一下程序charch1,ch2;printf("请输入ch1,ch2的值:");scanf("%c%c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);printf("请再次输入ch1的值:");scanf("%c",&ch1)......
  • 【C语言】---- scanf函数和printf函数
    1函数简介printf()函数和scanf()函数能让用户可以与程序交流,它们是输入/输出函数,或简称为I/O函数。虽然printf()是输出函数,scanf()是输入函数,但是它们的工作原理几乎相同。两个函数都使用格式字符串和参数列表。2scanf()函数C库包含了多个输入函数,scanf()是最通用的一个,因为......