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函数输入带空格的字符串相关推荐

  1. c语言中字符串中输入空格,C语言输入带空格的字符串

    因为: scanf("%s",str); 遇到空格就停止接收后面的字符. scanf("%s", str, 10); 不能接收带空格的字符串输入,虽然它的指定长 ...

  2. 关于在字符数组中利用scanf函数输入空格等问题

    关于在字符数组中利用scanf函数输入空格等问题 控制串/数组 中的空白符使 scanf() 在输入流中跳过一个或多个空白行.空白符可以是空格(space).制表符(tab)和新行符(newline) ...

  3. C/C++中输入带空格的字符串 string 转 char*

    在C和C++中,用普通的方法输入带空格的字符串时,得不到后续的数据.想要在字符串中包含空格可以使用以下方法: (1)使用正则表达式 scanf("%[^\n]]",str); // ...

  4. C++中判断在字符串中是否存在空格 以及 如何输入带空格的字符串

    1:引言: 输入带空格的字符串 需要用到 getline(cin,str);具体在代码中看 2:上码 #include<bits/stdc++.h> using namespace std ...

  5. 洛谷 P1598 垂直柱状图(输入带空格的字符串)

    P1598 垂直柱状图 菜鸟生成记(25) 这个题有点水,考察字符串的基本功(哎!就喜欢这考基本功的水题) 这一题涉及到输入带空格的字符串输入和格式化输出; 唉!只从gets死了(C11删除gets, ...

  6. Scanner输入带空格的字符串

    Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是  空白符:比如空格,回车,tab 等等. next()方法读取到空白符就结束: nextLine()读取 ...

  7. java控制台输入带空格的字符串

                                                   java控制台输入带空格的字符串 Scanner sc = new Scanner(System.in); ...

  8. C语言基础之--scanf函数

    写代码的时候,我们可以看得出,几乎每一个C程序都会包括输入输出.输入输出是程序中最基本的操作之一.C语言本身并不提供输入输出的语句,输入输出操作是由C标准函数库中的函数来实现的.今天就先说说输入:sc ...

  9. c语言程序输入与输出函数,C语言printf()和scanf()函数?其实就是输入输出

    在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把结果 ...

最新文章

  1. 微软面试题 单向链表找环
  2. 二叉查找树(二叉排序树)创建,插入,删除操作。
  3. window7 telnet localhost 5554
  4. Kafka学习之路 (三)Kafka的高可用
  5. Java学习计划,给自己一个学习线路
  6. 【渝粤题库】陕西师范大学200751 《操作系统》作业
  7. MyEclipse配色字体等配置的解决方案
  8. java calendar_Java Calendar complete()方法与示例
  9. 在线mod计算机,计算机系中有关mod的常识(全).doc
  10. Delphi常用字符串函数
  11. 简单python爬虫——图片
  12. matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
  13. 华为linux连蓝牙鼠标,huawei蓝牙鼠标怎么样? 华为蓝牙鼠标连接使用教程
  14. 数据架构:数据中心 主备、双活
  15. Robcup2D足球学习记录【2020.01.10】
  16. 各种DBCO偶联试剂成为点击化学反应的操控新策略
  17. 水文预报中的确定性系数如何计算确定
  18. 关于flask入门教程-ajax+echarts实现大屏展示
  19. bash报错syntax error near unexpected token `$‘\r‘‘解决方法
  20. 4月8日云栖精选夜读:阿里巴巴与清华大学成立联合实验室 机器将有五感、懂感情

热门文章

  1. 奥运开幕式引发的遐想
  2. html粗圆点,HTML
  3. 一位老师对学生的人生寄语(Z)
  4. 程序员养生攻略之防猝死指南
  5. IOS风企业宣传PPT模板
  6. 基于PHP+MySQL的电子商城系统
  7. 【Verilog 语法】~ if-else、case、for、generate、函数 function、任务 task、过程块、位宽计算、阻塞/非阻塞、时间尺度、存储器设计、
  8. java骂人_著名的Java并发编程大师都这么说了,你还不知道伪共享么!
  9. uniapp 画中画悬浮窗(视频) Ba-VideoPip
  10. 特殊纸张如何设置打印格式