在网页上能成功运行,本地就出不来结果

P1319 压缩技术

kirit @ 2021-12-05 21:11:46

本地运行输入样例后回车没反应,在网页版的编译器上就能正常输出,设备和编译器都换过了还是这样,已经提交代码了,测试结果都是AC,求大佬解惑,感谢。 代码如下

#include<stdio.h>
#include<stdlib.h>

void prt(int, int, int, int*);

int main()
{
    int N,n,*np,i=0,j=0;

    scanf("%d", &N);
    np = (int*)malloc((N*N) * sizeof(int));

    while (scanf("%d", &n) == 1) {
        if (i % 2 == 0)
            prt(j, j + n, 0, np);
        else
            prt(j, j + n, 1, np);
        j += n;
        i++;
    }
    for (int i = 0; i < N * N; i++) {
        printf("%d", np[i]);
        if ((i + 1) % N == 0)
            putchar('\n');
    }
    return 0;
}

void prt(int i, int t, int n, int* np)
{
    for (; i < t; i++)
        np[i] = n;
    return;
}

by ud2_ @ 2021-12-05 21:17:21

@kirit

while (scanf("%d", &n) == 1) {

你自己写的“如果还有整数输入,就循环”。


by comando @ 2021-12-05 21:20:23

建议控制台Ctrl+D结束输入


by _QrSn_ @ 2021-12-05 21:25:48

输入完后Ctrl+z+回车结束输入


by kirit @ 2021-12-05 21:27:01

@ud2_ 缓冲区不是就那几个数嘛,读到完以后再读的话scanf返回值不就不是1了吗?是不是我哪里理解错了?


by ud2_ @ 2021-12-05 21:29:07

@kirit scanf 不知道还会不会继续输入,所以一直在等待,直到你按上面的方法结束输入。


by kirit @ 2021-12-05 21:29:21

@ud2_ 现在明白了,看了另外几个老哥的解释,反应过来哪里的问题了,感谢解答


|