cpp
char arr[200] = { 0 };
fgets(arr, 200, stdin);
我给你用最简单的话拆解一下每一句的意思、作用和注意事项:
一、 核心功能总结
一句话功能 :这行代码的作用是 从键盘(或文件)读取一行文字,存到 arr 数组里 。比如输入 Hello World,arr 里就会存下 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)
- 含义:这是读取字符串的核心函数。
- 参数解释 :
arr:把读到的文字放在这个数组里。200:最多读多少个字符(防止装不下溢出)。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 个注意事项(避坑)
-
不要忘记头文件 使用
fgets必须包含标准库头文件:cpp
运行
#include <cstdio> // C++版本 // 或者 #include <stdio.h> // C语言兼容版本 -
区分
gets和fgets- 图片里是
fgets(安全,有限制长度)。 - 以前有个
gets()函数(没限制长度),非常危险,已经被废弃,千万别用!
- 图片里是
-
读取换行符的问题
fgets会把你按的 回车 存进去。如果你不想要这个换行,可以手动替换掉:cpp
运行
// 把最后一个换行符删掉(如果有的话) arr[strcspn(arr, "\n")] = '\0';
总结
这就是标准的 "读一行文本" 操作:
- 准备一个盒子
arr; - 用
fgets从键盘把一行内容装进盒子里。
如果是做编程题(比如读一行含空格的句子),这就是最标准的写法!