You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动