扫描直到新行

2023-12-06

我想读取输入的所有文本,直到输入新行字符。

这是我的代码。

int i=0;
char ch[MAX];
printf("Enter the text\n");
while(true)
{
     scanf("%c",&ch[i]);
     if(ch[i]=='\n')
         break;
     i++;
}

但当我尝试执行时,它只读取一个单词。

我也尝试过scanf("%s",ch);但结果是一样的。


将评论转移到答案。

你的代码会起作用。您发布的代码会扫描所有内容,直到出现换行符(\n)被发现。但作为乔纳森·莱夫勒评论说,你永远不会以 NUL 结尾你的字符串。只需使用

ch[i]='\0';

循环之后。此外,用户可以输入的字符数多于MAX-1(额外的一个\0在最后)这可能会导致缓冲区溢出。您应该添加一个检查,例如

if(i==MAX-1)
break;

就在你之前scanf以防止其溢出。

注意scanf("%s",ch);将扫描直到遇到空格或换行符。


Instead of looping and scanning character by character, just use
scanf("%[^\n]",ch);
getchar();

以上scanf扫描所有内容,直到找到换行符并将其放入ch. The getchar()然后丢弃\n来自stdin。您还可以通过限制字符数量来提高安全性scanf读入ch.

scanf("%49[^\n]",ch);

以上scanf将扫描最多 49 个字符并添加\0在最后。您可以替换的值MAX-1那里。我以 50 为例。

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

扫描直到新行 的相关文章

  • C# 中的 Culture 相当于 Java 中的 Locale 吗?

    C 使用文化的概念 这在操作上与 Java 中的 Locale 类似吗 或者底层概念是否存在显着差异 从文化而不是语言环境的角度进行工作是一种寻找正确抽象层次的尝试 从以类似方式做事的人群的角度来考虑事物 而不是谈论地理区域和语言 并有点疯
  • 如何指定CMAKE外部项目的编译器?

    我使用ExternalProject Add 包含一个外部项目 我想要的是能够做到 cmake DCMAKE CXX COMPILER
  • HttpResponseMessage 的内容为 JSON

    我有一个 ASP NET MVC WEB API 由于多种原因 由于没有授权而重定向 我不能只使用一个简单的对象并在我的控制器方法中返回它 因此我需要 HttpResponseMessage 类来允许我重定向 目前我正在这样做 var re
  • C 中的分段错误

    我需要用 0 填充二维数组 但编译后的程序会出现此错误 怎么了 int main int vert 1001 1001 int hor 1001 1001 int dudiag 1416 1416 int uddiag 1416 1416
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • ResourceDictionary 源中的 Uri 语法(通用 Windows 平台)

    我正在迁移我的Windows 8 1项目到Windows 10 通用 Windows 平台 这时我被拦住了ResourceDictionary改变在UWP 为了简单起见 我有包含 2 个项目的 Windows 8 1 解决方案 App pr
  • F# 内联如何工作?

    对于 F 我的理解是您可以使用 inline 关键字在调用站点执行类型专门化 那是 val inline a gt b gt c when a or b static member a b gt c 约束条件是 a or b必须有一个静态成
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 使用成员函数作为 std::shared_ptr 的自定义删除器时出现问题

    我正在尝试弄清楚如何将 std shared ptr 与自定义删除器一起使用 具体来说 我将其与 SDL Surface 一起使用 如下所示 std shared ptr
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • C# Linq 可以做组合数学吗?

    我有这个数据结构 class Product public string Name get set public int Count get set var list new List
  • DLL 中的 XP 风格组合框

    我需要使用 C 和 WIN32 API 无 MFC 在 DLL 中创建 XP 风格的组合框 我设法在 DLL 中创建控件 不是以 XP 风格 我设法在带有清单的 exe 中创建 XP 样式组合框 但它在 DLL 中不起作用 为了让您的 DL
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • MPI_Gatherv:根数组中收到的垃圾值

    我正在尝试实施MPI Gatherv函数于C 根据我的程序 包括 root 在内的每个进程都应该创建一个大小等于 进程的等级 1 这将在所有单元格中保持进程的等级 然后这个本地数组被收集到根的 rcv array 中 不知何故 我得到了垃圾
  • C# 编译器编译 .txt .obj .java 文件

    using System class Program public static void Main Console WriteLine Hello World Console ReadLine 我将文件另存为1 java 2 obj an
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R
  • 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节

    我正在读专业 Net 性能 https rads stackoverflow com amzn click com 1430244585本书有关参考类型内部结构的部分 它提到 对于 32 位 net 进程 引用类型具有 4 字节的对象头和

随机推荐

  • 如何有条件地阻止用户导航到 mat-tab-group 中的其他选项卡

    我有一个使用角度材料选项卡组的角度组件
  • 为什么我的模板不接受初始化列表

    我创建了一个模板 如下所示 template
  • 如何在 Mac OS X Mavericks 中获取 Java 32 位

    我正在尝试在我的 MAC 上设置 Openfire XMPP 服务器 但问题是我需要升级到 Maverick for Titanium 一旦升级到 Maverick Java 就会更新到 64 位 而不是 Openfire 所需的 32 位
  • 如何在 Eclipse 中运行 django 测试以使调试成为可能,但在测试数据库上

    我有一个困扰我很长时间的问题 我使用 Pydev 或 Nose 测试运行器从 eclipse Python 单元测试 运行测试 这样就可以调试测试并在 PyUnit 视图中观察它们 但这样就不会创建测试数据库 也不会使用manage py
  • 需要使用TypeORM/NestJS在PostgreSQL数据库中上传文件

    任何人都可以帮忙解决这个问题吗 我需要使用 TypeORM NestJS 将文件上传到 PostgreSQL 数据库 文件是表单的一部分 我已经采取了以下实体类 export class Certificate ApiProperty Pr
  • 如何在R中写出具有不同文件名的多个文件

    我有一个大文件 gt 10000 行数据 我想按 ID 写出一个单独的文件 我有 50 个唯一的 ID 名称 我想要为每个名称创建一个单独的文本文件 这是我到目前为止所得到的 但我不断收到错误 我的ID实际上是字符串 如果我能用该字符串命名
  • 使用 sqlalchemy 和 mysql unix 时间戳定义表

    背景 MySQL 中有多种存储日期的方法 作为字符串 例如 2009 年 9 月 9 日 作为使用函数 UNIX TIMESTAMP 的整数 这被认为是传统的 UNIX 时间表示 您知道自纪元加 减闰秒以来的秒数 作为MySQL TIMES
  • HTML5发布及修改时间

    我想包括一篇文章的发表和修改时间 我查看了文档 但找不到有关此的信息 到目前为止 我得到了这个
  • QFile::flush() 与 QFile::close()

    我正在类中实现一个方法 它将数据从 TableView 对象写入 CSV 文件 然而 当程序运行时 程序以非常慢的速度 3或4秒 将数据写入USB驱动器上的文件 但在系统的内部驱动器上运行良好 这是因为我在写入文件后没有使用flush 或c
  • 如何在 Android Gridview 中设置替代行颜色?

    如何在网格视图中设置替代行颜色 我搜索了很多关于如何设置网格视图行颜色的教程 但没有关于网格视图行颜色的信息 我得到的列表视图仅具有替代行颜色 我需要交替行应该是白色和黑色 在这里我包括我的代码 请帮我 这是 Java 类 public c
  • 正则表达式用逗号替换客户评论中的一些点

    我需要写一个正则表达式来替换 with 在一些患者对药物的评论中 他们应该在提到副作用后使用逗号 但其中一些使用了点 例如 text the drug side effects are night mare nausea night swe
  • 透明地记录下载的最佳方式?

    我有一个个人项目 已经上线一段时间了 我一直通过这样做来记录下载量 当用户单击下载链接时 它会点击一个 PHP 脚本 该脚本将一些信息写入表中 写入数据后 脚本将返回实际文件的路径 然后 用户可以将文件保存到硬盘上 就像下载任何其他文件一样
  • ListViewAnimations 库导致顶级异常

    我正在尝试将此库嵌入到我的 Android 项目中 正如他们的 wiki 中所说 我做了很少的事情 添加了 gradle 编译行compile com nhaarman listviewanimations library 2 6 0 然后
  • 新的 iOS 应用程序与 Facebook Graph api v2.0 作斗争

    我是应用程序开发新手 我一直在构建一个社交 iOS 应用程序 需要发送 Facebook 邀请才能加入该应用程序 昨天发布的 Facebook Graph API 2 0 似乎对如何邀请尚未参与游戏的人提出了更严格的要求 我正在尝试激活 m
  • 如何使设备顶部面板(状态栏)与flutter中的AppBar具有相同的背景颜色?

    如何使设备顶部面板 状态栏 与flutter中的AppBar具有相同的背景颜色 设备顶部面板的颜色始终比 AppBar 背景颜色深 多谢 在 iOS 上 这已经是事实了 在 Android 上 添加以下内容onCreate in MainA
  • Apache RewriteRule 用于删除任何域名上的端口

    我有一台具有一个 IP 地址的虚拟服务器 为几个不同的站点提供服务 其中之一带有 SSL 证书 我需要在第二个域上添加 SSL 证书供我自己私人使用 由于我只有一个 IP 地址 所以我将其添加到端口 8080 上 这很好用 我现在的问题是
  • 为什么flink容器vcore大小始终为1

    我在yarn上运行flink 更准确地说是在AWS EMRyarn集群中 我阅读了flink文档和源代码 默认情况下 对于每个任务管理器容器 当从yarn请求资源时 flink将请求每个任务管理器的插槽数量作为vcore的数量 而且我也从源
  • 如何在R中将二进制小数转换为十进制小数?

    我需要编写一个函数 将二进制小数转换为 R 中的十进制小数 f 0 001 0 125 我做了什么 我搜索了R包中的相关函数 DescTools BinToDec 0 001 NA DescTools BinToDec 0 001 NA b
  • React Ionic 5:如何将对象从App组件传递到Tab组件

    我使用 Ionic 5 选项卡模板创建了一个 Ionic React 应用程序 我想将一个对象从应用程序组件传递到选项卡组件 有什么办法可以做到吗 Tab1 和 Tab2 是我的选项卡组件 Note 我希望这个对象在两个选项卡组件中使用两种
  • 扫描直到新行

    我想读取输入的所有文本 直到输入新行字符 这是我的代码 int i 0 char ch MAX printf Enter the text n while true scanf c ch i if ch i n break i 但当我尝试执