C++(兼容 C 语言) 的标准输入语法,用来读取一行文本

cpp 复制代码
char arr[200] = { 0 };
fgets(arr, 200, stdin);

我给你用最简单的话拆解一下每一句的意思、作用和注意事项:

一、 核心功能总结

一句话功能 :这行代码的作用是 从键盘(或文件)读取一行文字,存到 arr 数组里 。比如输入 Hello Worldarr 里就会存下 H e l l o ...


二、 逐行代码详解

1. char arr[200] = { 0 };
  • 含义 :定义一个 字符数组 (字符串),名字叫 arr
  • char:类型是字符(存字母、数字、符号)。
  • arr[200] :表示这个数组能装 200 个字符(最多存 199 个字母 + 1 个结束符)。
  • = { 0 }初始化所有元素为 0
    • 作用:防止数组里残留垃圾数据,确保字符串末尾有正确的结束符 \0
2. fgets(arr, 200, stdin)
  • 含义:这是读取字符串的核心函数。
  • 参数解释
    1. arr:把读到的文字放在这个数组里。
    2. 200:最多读多少个字符(防止装不下溢出)。
    3. stdin :表示从 标准输入 读,也就是从 键盘 输入。
  • 特点
    • 它会一直读,直到遇到 换行符(Enter)读满 200 个字符 才停止。
    • 它会把 换行符 \n 也一起存进去(代表回车)。

三、 举个直观的例子

输入(在控制台打字按回车):

text

复制代码
I love C++

代码执行后

  • arr[0] = 'I'
  • arr[1] = ' '
  • arr[2] = 'l'
  • ...
  • arr[7] = '+'
  • arr[8] = '+'
  • arr[9] = \n (存的是换行符)
  • arr[10] = \0 (自动补的结束符)

四、 新手必看的 3 个注意事项(避坑)

  1. 不要忘记头文件 使用 fgets 必须包含标准库头文件:

    cpp

    运行

    复制代码
    #include <cstdio>  // C++版本
    // 或者 #include <stdio.h>  // C语言兼容版本
  2. 区分 getsfgets

    • 图片里是 fgets(安全,有限制长度)。
    • 以前有个 gets() 函数(没限制长度),非常危险,已经被废弃,千万别用
  3. 读取换行符的问题 fgets 会把你按的 回车 存进去。如果你不想要这个换行,可以手动替换掉:

    cpp

    运行

    复制代码
    // 把最后一个换行符删掉(如果有的话)
    arr[strcspn(arr, "\n")] = '\0';

总结

这就是标准的 "读一行文本" 操作:

  1. 准备一个盒子 arr
  2. fgets 从键盘把一行内容装进盒子里。

如果是做编程题(比如读一行含空格的句子),这就是最标准的写法!

相关推荐
柒儿吖1 小时前
基于 lycium 在 OpenHarmony 上交叉编译 utfcpp 完整实践
c++·c#·harmonyos
sTone873751 小时前
std::function/模板/裸函数指针选型指南
c++
Codiggerworld2 小时前
从字节码到JVM:深入理解Java的“一次编写,到处运行”魔法
java·开发语言·jvm
无聊的小坏坏2 小时前
一文讲通:二分查找的边界处理
数据结构·c++·算法
禾叙_2 小时前
【netty】Channel
开发语言·javascript·ecmascript
云深处@2 小时前
【C++11】包装器,智能指针
开发语言·c++
十五年专注C++开发2 小时前
CMake进阶:SelectLibraryConfigurations模块
c++·cmake·自动化构建
量子炒饭大师2 小时前
【C++入门】Cyber深度漫游者的初始链路——【类与对象】初始化成员列表
开发语言·c++·dubbo·类与对象·初始化成员列表
独自破碎E2 小时前
BISHI43 讨厌鬼进货
android·java·开发语言