You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未编写printf的C程序出现输入重复输出的异常问题咨询

问题原因

这根本不是程序的输出,全是终端输入回显机制闹的误会。

你的代码里确实没有任何输出语句,不管手动输入还是粘贴输入,程序都不会输出半句话。之所以粘贴时看起来有重复内容,是因为:

  • 手动输入时,你敲一行回车一行,终端会立刻把你敲的内容显示出来(这叫回显),但程序只是默默读走这些内容,等程序跑完,终端提示符出来,你不会觉得有“额外输出”;
  • 粘贴输入时,终端会一次性把所有粘贴的内容塞进输入缓冲区,同时终端的回显功能也会把这些内容显示出来。加上程序读取输入的节奏和粘贴的显示时机撞在一起,看起来就像是程序重复输出了输入内容——但实际上你看到的全是终端自己显示的输入内容,程序啥也没输出。
解决方法

如果想彻底搞明白,或者避免这种混淆,有两个办法:

  • 关闭终端回显(Linux/Unix环境):在程序开头关掉终端的回显功能,结束前再恢复,这样终端就不会显示你输入的内容,你就能明确看到程序真的没输出:
#include <stdio.h>
#include <stdlib.h>
char s[50];
int n,i;
int main(){
    system("stty -echo"); // 关闭输入回显
    scanf("%d",&n);
    for (i=0;i<n;i++){
        scanf("%s",s);
    }
    system("stty echo"); // 恢复回显
    return 0;
}
  • 主动添加输出(如果需要的话):要是本来就想让程序输出内容,直接在每次scanf之后加printf("%s\n", s);,这样你看到的就是程序主动输出的内容,不会和终端回显混在一起。

内容的提问来源于stack exchange,提问作者Elvin Qarayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:15:48