C语言 如何用scanf函数输入带空格的字符串
scanf的返回值是正确输入的参数个数。
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:
(1)遇空格、“回车”、“跳格”键;
(2)遇宽度结束;
(3)遇非法输入。
以下这段代码:
//vs可自定义加注释(在选项中更改),我的是ctrl+q,可选中多行加注释,alt+回退键=撤销
#include<stdio.h>
int main() {char c[20];printf("请输入一串英文:");scanf_s("%s", c,20);//加上不超过数组的大小才能正常输出且不能超过数组长度printf("输入的字符为:%s\n", c);return 0;
}
遇到空格则判定输入结束,后续不再接收:
只能输入不带空格的一串字符,且输入的字符串超出定义的参数长度,则无法正常输出:
scanf_s(“%s”, c,10);
超过数组定义的长度,会直接出弹窗警告:
解决方法1:定义多个数组用于存储字符串
//因为scanf遇到空格就认为输入结束,因此,想要输出i am student,可以试试定义三个字符串:
#include <stdio.h>int main()
{char str1[10], str2[10], str3[10];printf("请输入字符串:");scanf_s("%s%s%s", str1,10, str2,10, str3,10);printf("输出结果:%s %s %s\n", str1, str2, str3);//%s间要加空格return 0;}
方法2:%[]的格式控制法:%[scanfset]
scanfset有两种形式:
一种是以非“^”字符开头的scanset ,表示在读入字符串时将匹配所有在scanfset中出现的字符,遇到非scanfset中的字符时输入就结束;
一种形式是以“^“字符开头的scanfset,表示在读入字符串时将匹配所有不在scanfset中出现的字符,遇到scanfset中的字符输入就结束。
上面的代码经过处理后就可以实现,字符串中带有空格输入:
#include<stdio.h>
int main()
{char str[80];scanf_s("%[^\n]", str,80);//记得给scanf_s指定一个参数(范围)printf("%s\n", str);return 0;
}
如果想用%c输出带空格的字符,只能利用循环逐个输出:
#include<stdio.h>
int main() {char c[20]="i am student.";for (int i = 0; i < 20; i++) {printf("%c", c[i]); }printf("\n");return 0;
}
用scanf函数输入,判断输入字符长度,决定终止位置。
//我自己写的,非完美答案
#include<stdio.h>
#include <string.h>
int main() {char c[20]; int i = 0;int strLen=0;scanf_s("%[^\n]", c, 20);strLen = strlen(c);for (int i = 0; i < strLen; i++) { //获取输入的字符串长度if(c[i]!='\n') //不回车,就认为还在输入,避免空格影响判断printf("%c", c[i]); }printf("\n");return 0;
}
字符%c输出和字符串%s输出是有区别的,%c会输出定义的数组长度的字符,也就是如果输入长度小于定义数组长度,后面会补上一些乱七八糟的字符填充够数组的长度;
类似这样:
%s是遇到‘\n’则知道终止位置,就会停止输出。
C语言 如何用scanf函数输入带空格的字符串相关推荐
- c语言中字符串中输入空格,C语言输入带空格的字符串
因为: scanf("%s",str); 遇到空格就停止接收后面的字符. scanf("%s", str, 10); 不能接收带空格的字符串输入,虽然它的指定长 ...
- 关于在字符数组中利用scanf函数输入空格等问题
关于在字符数组中利用scanf函数输入空格等问题 控制串/数组 中的空白符使 scanf() 在输入流中跳过一个或多个空白行.空白符可以是空格(space).制表符(tab)和新行符(newline) ...
- C/C++中输入带空格的字符串 string 转 char*
在C和C++中,用普通的方法输入带空格的字符串时,得不到后续的数据.想要在字符串中包含空格可以使用以下方法: (1)使用正则表达式 scanf("%[^\n]]",str); // ...
- C++中判断在字符串中是否存在空格 以及 如何输入带空格的字符串
1:引言: 输入带空格的字符串 需要用到 getline(cin,str);具体在代码中看 2:上码 #include<bits/stdc++.h> using namespace std ...
- 洛谷 P1598 垂直柱状图(输入带空格的字符串)
P1598 垂直柱状图 菜鸟生成记(25) 这个题有点水,考察字符串的基本功(哎!就喜欢这考基本功的水题) 这一题涉及到输入带空格的字符串输入和格式化输出; 唉!只从gets死了(C11删除gets, ...
- Scanner输入带空格的字符串
Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符:比如空格,回车,tab 等等. next()方法读取到空白符就结束: nextLine()读取 ...
- java控制台输入带空格的字符串
java控制台输入带空格的字符串 Scanner sc = new Scanner(System.in); ...
- C语言基础之--scanf函数
写代码的时候,我们可以看得出,几乎每一个C程序都会包括输入输出.输入输出是程序中最基本的操作之一.C语言本身并不提供输入输出的语句,输入输出操作是由C标准函数库中的函数来实现的.今天就先说说输入:sc ...
- c语言程序输入与输出函数,C语言printf()和scanf()函数?其实就是输入输出
在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把结果 ...
最新文章
- 微软面试题 单向链表找环
- 二叉查找树(二叉排序树)创建,插入,删除操作。
- window7 telnet localhost 5554
- Kafka学习之路 (三)Kafka的高可用
- Java学习计划,给自己一个学习线路
- 【渝粤题库】陕西师范大学200751 《操作系统》作业
- MyEclipse配色字体等配置的解决方案
- java calendar_Java Calendar complete()方法与示例
- 在线mod计算机,计算机系中有关mod的常识(全).doc
- Delphi常用字符串函数
- 简单python爬虫——图片
- matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
- 华为linux连蓝牙鼠标,huawei蓝牙鼠标怎么样? 华为蓝牙鼠标连接使用教程
- 数据架构:数据中心 主备、双活
- Robcup2D足球学习记录【2020.01.10】
- 各种DBCO偶联试剂成为点击化学反应的操控新策略
- 水文预报中的确定性系数如何计算确定
- 关于flask入门教程-ajax+echarts实现大屏展示
- bash报错syntax error near unexpected token `$‘\r‘‘解决方法
- 4月8日云栖精选夜读:阿里巴巴与清华大学成立联合实验室 机器将有五感、懂感情