C语言入门:实现输入时自动递增显示行号
实现带递增行号的控制台输入(C语言初学者友好版)
嘿,这个需求真的超容易实现,完全适合刚学C语言的朋友上手!核心思路就是用一个变量记录当前行号,每次循环先打印行号,再读取用户输入,之后让行号自动递增就行啦。
我给你写了一个带详细注释的基础示例代码,看完就能懂:
#include <stdio.h> #include <string.h> int main() { // 定义行号变量,从1开始计数 int line_num = 1; // 存储用户输入的字符串,大小可以根据需求调整 char input[100]; printf("请输入内容,按Ctrl+C可退出程序:\n"); // 无限循环,直到用户手动终止程序 while (1) { // 先打印当前行号 printf("%d ", line_num); // 读取用户输入(fgets比scanf更安全,支持带空格的整行输入) fgets(input, sizeof(input), stdin); // 处理fgets读入的换行符,避免后续操作带多余换行 input[strcspn(input, "\n")] = '\0'; // 可选:打印输入内容做验证,不需要可以删掉这行 printf("你输入的内容是:%s\n", input); // 行号自增,准备下一次输入 line_num++; } return 0; }
关键细节说明:
- 行号控制:
line_num初始设为1,每次循环结束后执行line_num++,就能实现行号自动递增。 - 安全输入:用
fgets代替scanf是因为它能读取包含空格的整行内容,还能避免缓冲区溢出的问题,更适合处理用户输入场景。 - 换行符处理:
strcspn(input, "\n")会定位到输入字符串里换行符的位置,把它替换成字符串结束符'\0',这样后续处理输入内容时就不会带着多余的换行符了。 - 退出方式:示例是无限循环,用户可以按
Ctrl+C终止程序;如果想让程序输入特定内容(比如"exit")时自动退出,可以加个小判断:if (strcmp(input, "exit") == 0) { printf("程序即将退出~\n"); break; }
运行程序后,就能得到你想要的效果:
1 foo
你输入的内容是:foo
2 bar
你输入的内容是:bar
3 baz
你输入的内容是:baz
...
是不是毫无难度?用到的都是初学者已经接触过的变量、循环、输入输出函数,完全没门槛~
内容的提问来源于stack exchange,提问作者user2656




