c总结 使用scanf输入字符串问题

2023-05-16

  学习c时经常遇到字符串的输入问题,使用scanf输入时总是会或多或少的遇到错误,总结一下我遇到过的情况

同时输入字符和字符串

  刚开始编写时可能大多数会这样写:

   (ch1为字符类型的数组,数组名即数组的首地址,所以不要&)

 当输入  字符  回车时会出现下面情况:

还没有输入字符串输入就结束了。当我们需要调用scanf输入的时候,输入的字符送到键盘缓冲区,然后scanf从中读取所规定的字符,例如 输入格式为%d,输入为777a2,实际上输入进去的时777,输入77 777,实际上输入进去的是77,因为空格和回车也会被scanf认为是字符。

 当我们输入c回车时,scanf从缓冲区把c提走赋予ch,但回车还在缓冲区并未提走,输入字符串时因为回车也是字符所以被赋予给ch1。

使用scanf输入可以这样做:

1.

结果是:

getchar() 是从控制台接收字符,注意只会接收一个字符,此时回车被getchar提走了

2.

结果是:

常用的是这两种方式,当然也可以直接使用gets()来输入字符串,它会把回车一起提走但不会把回车输入数组里,也可以使用fflush(stdin),是将缓冲区清空。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c总结 使用scanf输入字符串问题 的相关文章

  • ASM x64 scanf printf 双精度,GAS

    我不明白为什么这段代码对我不起作用 我需要对双精度使用 scanf 函数 然后对同一个双精度使用 printf 使用此代码时结果并不好 我看到的都是非常随机的角色 data d1 double format asciz lf n forma
  • 如何检测 scanf() 末尾的空格或换行符?

    我正在编写一个程序 我必须接受来自用户的命令 就像用户可以在其中设置环境变量值的 shell 一样 我遇到的问题是如果用户输入set var var value我需要知道用户输入了一个空格而不仅仅是set并按下 Enter 键 这是一个不同
  • 从 C 文本文件中读取 int 值

    我有一个包含以下三行的文本文件 12 5 6 4 2 7 9 我可以使用fscanf函数读取前 3 个值并将它们存储在 3 个变量中 但我无法阅读其余部分 我尝试使用fseek函数 但它仅适用于二进制文件 请帮助我将所有值存储在整数变量中
  • Scanf 获取数字

    我是 C 语言新手 我有一个关于 scanf 的数字问题 我需要做的是 scanf 输入仅 3 位数字 其他字符或符号应被评估为垃圾 或者也许我需要使用isdigit 但我不确定它是如何工作的 我只有这个 但我知道它不起作用 scanf d
  • 使用 fscanf() 使用 feof()

    这是我的代码 include
  • scanf 的工作并检查输入是否为 int

    我想检查给定的输入是否是整数输入 我不想将输入存储在字符串中 在看到 stackoverflow 上的几个问题以及点击和试用后 我创建了以下代码 while scanf d c num a 2 a n printf Please enter
  • `scanf("%d", ...)` 和 `gets` 一样糟糕吗?

    很多年了 gets被普遍贬低为不安全的功能 规范的SO问题是为什么 gets 函数如此危险以至于不应该使用它 https stackoverflow com questions 1694036 why is the gets functio
  • Python流提取

    许多编程语言的标准库都包含 扫描器 API 用于从文本输入流中提取字符串 数字或其他对象 例如 Java 包括Scanner类 C 包括istream C 包括scanf Python 中与此等效的是什么 Python 有一个流接口 即继承
  • scanf() 将换行符保留在缓冲区中

    我有以下程序 int main int argc char argv int a b char c1 c2 printf Enter something scanf d a line 1 printf Enter other somethi
  • Scanf 不读取双精度

    我正在尝试阅读double持续从用户使用中获取价值scanf Code printf Enter A value n double input int result scanf f input printf INPUT f n input
  • 为什么不是 scanf("%*[^\n]\n");和 scanf("%*[^\n]%*c");清除悬挂的换行符?

    拨打电话后scanf d variable 我们留下了一个换行符挂在stdin 应在调用之前清除fgets 或者我们最终给它提供一个换行符并使其过早返回 我找到了建议使用的答案scanf n c 第一次致电后scanf放弃换行符和其他建议使
  • 为什么我不能使用“scanf_s”同时读取字符和数字?

    这段代码崩溃了 scanf s c d ch x Run error 但这段代码有效 scanf s c ch scanf s d x Run succeed 我想知道为什么第一个代码片段是错误的 运行错误 的意思是 当我运行程序输入时 编
  • 为什么 scanf("%d", [...]) 不消耗 '\n'?而 scanf("%c") 呢?

    Here https stackoverflow com questions 217074 parsing input with scanf in c 我在接受的答案中看到了这样的说法 大多数转换说明符会跳过前导空格 包括换行符 但是 c才
  • fscanf 无法正确读取浮点数

    这是一个家庭作业问题 我在使用 fscanf 从文本文件读取浮点值时遇到问题 基本上我试图从文件中读取浮点值并将它们存储在动态数组中 输入文件每行有两个浮点数 所以一行可能是 0 85 7 34 不带引号 所以我尝试使用 fscanf fp
  • scanf("%d", &value) 中的字符输入[重复]

    这个问题在这里已经有答案了 简而言之 我的代码是 include
  • 从 .txt C 读取

    我在C语言方面遇到了一些麻烦 我有一个 txt 文件 其中包含以下形式的各行 F 65 S 4 1 139 56 3704 26 和我的程序 p fopen dados txt r if p NULL printf n nNao foi p
  • scanf:内部带有宏(#define 常量)的模板

    我有一些像这样的代码 define MAXSIZE 100 int main char str MAXSIZE 1 scanf 100s str 问题是我仍然有 幻数 100 尽管定义了 MAXSIZE 有没有办法正确地将 MAXSIZE
  • scanf 和 doubles 的问题[重复]

    这个问题在这里已经有答案了 我无法理解为什么会发生这种情况 使用以下代码 include
  • 使用 scanf 读取行或在特殊字符上中断

    是否可以使用 scanf 读取文本行 排除 n并在特殊 选择的 字符上中断 但包括该字符 这是我现在的表情 while scanf 49 n c x 1 但这不包括 是否可以中断阅读 但也读那个字符 好的 我正在使用约翰内斯 绍布 利特 c
  • scanf() 不等待用户输入[重复]

    这个问题在这里已经有答案了 我正在使用 c 中的双向链表来制作树 我在该函数中使用递归调用 但不知何故它不起作用 我的代码是 struct node int data struct node right struct node left s

随机推荐

  • 假设检验基础 R语言

    假设检验实例 某车间用一台包装机包装葡萄糖 包得的袋装糖重是一个随机变量 它服从正态分布 当机器正常时 其均值为0 5千克 标准差为0 015千克 某日开工后为检验包装机是否正常 随机地抽取它所包装的糖9袋 称得净重为 千克 0 497 0
  • Mysql 求每组第一名的信息

    Mysql 求每组第一名的信息 xff0c 以下是参考SQL语句 xff1a select h from wom interface health h select max id as id tenant id from wom inter
  • 两正态总体参数的检验

    方差的比较 在 R 中 xff0c 函数 t test 提供了 T 检验和相应的区间估计的功能 t test x y 61 NULL alternative 61 c 34 two sided 34 34 less 34 34 greate
  • R语言设置工作目录

    用 getwd 代码查看当前文件工作路径 xff0c 此处显示的工作路径在C盘 用 setwd 代码重新设置需要的工作路径 xff0c 如图中显示 xff0c 设置工作路径为D盘中的R数据库 xff0c 具体格式是 xff1a E xff1
  • 机器学习简介

    第一章 机器学习简介 机器学习 xff0c 发明计算机算法 xff0c 把数据转化为智能行为 xff08 核心循环的三者 xff1a 现有数据 xff1b 统计方法 xff1b 计算能力 xff09 数据挖掘 xff0c 从大型数据库中产生
  • 机器学习与R语言之 探索和理解数据 使用数据usedcars

    2 3 探索和理解数据 2 3 1 数据的结构 read scv str 数据导入到R后 xff0c 就要开始对数据做一个基本的检查 xff1b 数据的特征和案例 xff1b 理解数据的独特 xff0c 以便后面让模型匹配具体的学习问题 x
  • 机器学习与R语言 多元线性回归insurance.R:保险费

    insurance lt read csv 34 insurance csv 34 stringsAsFactors 61 TRUE str insurance 既然因变量是charges 我们就来看一下它是如何分布的 summary in
  • 各种假设检验实例整理 R语言

    http www cnblogs com ywliao archive 2017 04 17 6724334 html
  • 人机交互大作业考核要求

    考试说明 根据课程特点 xff0c 考试采取大作业形式 为了考试学生的对课程基本理论 基本知识点的考察 xff0c 要求学生调查报告中必须满足下述文档描述要求 xff1b 同时 xff0c 为了充分发挥学生的自我能动性 积极性 创造性 xf
  • 5.2 Great minds think alike!

    So far so good 过得去 xff1b 到目前为止 xff0c 一直都还不错 例句 xff1a The work is rather difficult but so far so good 工作相当困难 xff0c 但到目前为此
  • 统计建模与R软件-第六章 回归分析

    6 1为了估计山上积雪融化后对下游灌溉的影响 xff0c 在山上建立一个观测站 xff0c 测量最大积雪深度X与当年灌溉面积Y xff0c 测得连续10年的数据如表6 17所示 表6 17 10年中最大积雪深度与当年灌溉面积的数据 序号 X
  • 数据降维之主成分分析

    信息过度复杂是多变量数据最大的挑战之一 主成分分析和探索性因子分析是两种用来探索和简化多变量复 杂关系的常用方法 主成分分析 xff08 PCA xff09 是一种数据降维技巧 xff0c 它能将大量相关变量转化为一组很少的不相关变量 xf
  • C/C++复习

    1 C传送参数 xff1a 两种 xff1a 值传递 xff0c 引用传递 xff1a 如下测试code void valuepass int x x 61 x 43 10 void pointerpass int x x 61 x 43
  • 主成分分析之法国经济分析数据详解

    用数据框的形式输入数据 conomy lt data frame x1 61 c 149 3 161 2 171 5 175 5 180 8 190 7 202 1 212 4 226 1 231 9 239 0 x2 61 c 4 2 4
  • 朴素贝叶斯 手机垃圾信息过滤 机器学习与R语言

    Chapter 4 Classification using Naive Bayes Example Filtering spam SMS messages Step 2 Exploring and preparing the data r
  • 子网掩码和IP地址计算网络地址和广播地址的换算

    子网掩码和IP地址计算网络地址和广播地址的换算 已知 IP地址为 xff1a 202 112 14 137 子网掩码 xff1a 255 255 255 224 要求计算出这台主机所在的网络地址和广播地址是 xff1f 解 xff1a 第一
  • 手机浏览器查看vue项目

    在手机浏览器上面我们可以直接查看vue项目 在有网的条件下 xff0c 我们使用指令npm run serve启动一个项目 xff0c 会出现两个网址 xff0c 一个是本地的 xff0c 一个是网络的 在手机浏览器地址栏输入第二个网址 x
  • STM32 HAL库IIC驱动

    1 STM32上IIC的一些争议 关于STM32的IIC驱动 xff0c 网上有很多争论 xff0c 究竟是使用STM32自带的硬件IIC还是用IO口和软件模拟IIC呢 xff1f 下面这个图形象展示了这些争论 总结一些 xff1a ST为
  • 怎么看jdk的安装路径

    首先 xff0c 先来说下第一种情况 已经安装好了jdk xff0c 也配置了环境变量 xff0c 这种情况下 xff0c 查看jdk路径是很容易的 在window环境下 xff0c 我们先执行java version 指令查看是否已经配置
  • c总结 使用scanf输入字符串问题

    学习c时经常遇到字符串的输入问题 xff0c 使用scanf输入时总是会或多或少的遇到错误 xff0c 总结一下我遇到过的情况 同时输入字符和字符串 刚开始编写时可能大多数会这样写 xff1a xff08 ch1为字符类型的数组 xff0c