首页 > 其他分享 >c语言中输入问题,scanf遇到空格就会停止输入

c语言中输入问题,scanf遇到空格就会停止输入

时间:2024-08-14 14:52:25浏览次数:14  
标签:char int scanf 空格 str include 输入

一.问题描述:

在c语言当中使用scanf进行输入字符串时,遇到空格会停止输入,如下面的例子。

#include<stdio.h>
int main(){
	char s[30];
	scanf("%s",s);
	printf("%s",s);
	
	return 0;
}

如下图可看出当输入“Hello world !”时,从输出可以看出只能读入“Hello”。

二.原因:

在C语言中,scanf函数遇到空格、制表符或换行符时会停止读取输入。

三.本文给出如下解决方案:

1.使用gets函数(不推荐,因为gets存在缓冲区溢出的风险):

#include<stdio.h>
int main(){
	char s[30];
	gets(s);
	printf("%s",s);
	
	return 0;
}

如下图当输入“Hello world !”时不会因为遇到空格会停止读取的状况。

2.使用fgets函数(推荐,因为它可以指定最大字符数,避免缓冲区溢出):

#include<stdio.h>
int main()
{
	char str[30];
	fgets(str,sizeof(str),stdin);
	printf("%s",str);
	return 0;
}

 如下图当输入“Hello world !”时不会因为遇到空格会停止读取的状况。

3.使用scanf配合循环和临时变量(适用于需要逐个处理单词的情况):

//采用c++解决
#include<iostream>
#include<cstring>//使用头文件引入strcat函数 
int main() {
 char str[30]="",temp[30],a;
 while(1){
    scanf("%s",temp);
 	strcat(str,temp);//将temp拼接到str后面
 	a=getchar();
 	
 	if(a=='\n'){
 	printf("%s",str);
    return 0;	
	 }
	 
	strcat(str," ");
 }

}

4.使用%[^ ]格式可以用来进行多个字符的输入,并对结束符进行自定义

#include<stdio.h>
int main(){
	char str[100];
scanf("%[^\n]",str);
printf("%s",str);
return 0;
}

标签:char,int,scanf,空格,str,include,输入
From: https://blog.csdn.net/m0_74098553/article/details/141155300

相关文章

  • wpf ValidationRule 校验数据输入
    publicclassCountValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,System.Globalization.CultureInfocultureInfo){doubled=0.0;if(double.TryParse((string)value,out......
  • ctfhub UA头注入,refer,过滤空格
    -1unionselect1,database()id=-1unionselect1,group_concat(table_name)frominformation_schema.tableswheretable_schema=database()id=-1unionselect1,group_concat(column_name)frominformation_schema.columnswheretable_schema=database()andta......
  • C语言-有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见 图8.43。写
    1.题目要求:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。2.解题思路:可采用指针法,可将数组中最后一位元素的值赋给中间变量暂存,然后将剩余数组中的元素通过指针依次后移一位......
  • 【CUBEide】01 GPIO输入/输出
    一、GPIO功能概述1、八种工作模式(1)输入浮空:作为GPIO输入引脚,不使用上拉或下拉电阻;(2)输入上拉:作为输入引脚,使用内部上拉电阻,引脚外部无输入时读取的电平为高电平;(3)输入下拉:输入引脚,使用内部下拉电阻,引脚外部无输入时读取的引脚输入电平为低电平(4)模拟:作为GPIO模拟引脚,用于ADC......
  • scanf函数
    基本用法用于读取用户的键盘输入,原型定义在头文件stdio.h。scanf()的第一个参数是格式字符串,里面会放置占位符,告诉编译器即将提取是数据类型,与printf()的占位符基本一致。其余参数用于存放用户输入的变量,格式字符串里面有多少个占位符,就有多少个变量。#include<stdio.h>intm......
  • 【C总集篇】第三章 字符串和格式化输入/ 输出
    文章目录第三章字符串和格式化输入/输出字符/字符串简要理解前言字符介绍和使用数组的简单介绍数组的创建格式字符串介绍和使用printf函数printf函数一般格式printf()的转换说明修饰符printf函数部分格式字符常用格式字符详解%d%f%c%sprintf的返回值scanf规则说明转......
  • 如何解决您输入的密码不满足密码策略的要求问题
    很多用户在修改电脑用户密码的时候就会出现“您输入的密码不满足密码策略的要求,请检查最短密码长度,密码复杂性和密码历史的要求”的问题。下面具体操作演示解决方法。方法/步骤 win+r调出运行窗口,输入命令:gepedit.msc 使用命令gepedit.msc打开本地组......
  • Unity新输入系统 之 InputAction(输入配置文件最基本的单位)
    本文仅作笔记学习和分享,不用做任何商业用途本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​首先你应该了解新输入系统的构成结构:Unity新输入系统结构概览-CSDN博客InputSystem-Unity手册1.InputAction概览还是需要强调,InputAction中定义了所......
  • Scanner的进阶使用——数字的输入
    1.用Scanner输入数字(整数和小数)1.定义一个整数变量2.建立扫描器3.使用if4.建立电脑接收数据5.设置else(那么)语法6.关闭Scanner......
  • visual studio 2022版本中,scanf报错改为scanf_s才能运行的解决方法,添加万能头文件代码
    本文意在解决scanf报错改为scanf_s才能运行的问题,将深入探讨解决方案和操作手法。目录本文意在解决scanf报错改为scanf_s才能运行的问题,将深入探讨解决方案和操作手法。方法一:直接在程序头部添加方法二:路线和保存方式实操例子运用方法二时保存出现没有权限无法保存的解......