C语言 我没有写printf,但在输出中它复制了输入

dkqlctbz  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(163)

enter image description here

#include <stdio.h>
char s[50];
int n,i;
int main(){
    scanf("%d",&n);
    for (i=0;i<n;i++){
        scanf("%s",s);
    }
    
    return 0;
}

它不应该给予输出,但它复制了输入,并给出输出,例如尝试写:4 hello how are you它不会给出,但如果你复制粘贴输入,如在例子中,它会给:(伙计们,我写了他们每一个在单独的行,但网站不这样显示它。而且,如果你写它一个接一个,你必须复制粘贴它,这个bug不会发生。
输入:

4
hello
how 
are
you

输出量:

hello
how
are
you
5t7ly7z5

5t7ly7z51#

下面是一个来自在线编译器的更好的示例:https://godbolt.org/z/joYdsdc11如您所见(stdin/input下方的右窗口),没有输出。
下面是一个固定的程序(我也删除了全局变量,因为使用它们是不好的做法):

#include <stdio.h>

int main (void){
    int n;
    char s[50];
    
    scanf("%d",&n);
    printf("%d\n", n);

    for (int i=0;i<n;i++){
        scanf("%s",s);
        puts(s);
    }
  
    return 0;
}

输出量:

4
hello
how
are
you

https://godbolt.org/z/sjcMrq4vb

相关问题