相关疑难解决方法(0)

Theory Behind getchar() and putchar() Functions

I'm working through "The C Programming Language" by K&R and example 1.5 has stumped me:

#include <stdio.h>

/* copy input to output; 1st version */
int main(int argc, char *argv[])
{
    int c;

    while ((c = getchar()) != EOF)
        putchar(c);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

I understand that 'getchar()' takes a character for 'putchar()' to display. However, when I run the program in terminal, why is it that I can pass an entire line of characters for 'putchar()' to display?

c putchar getchar

6
推荐指数
1
解决办法
4639
查看次数

因睡眠而导致的奇怪行为()

我刚刚熟悉睡眠(),我发现了

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
    printf("%d",i);
    sleep(1);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

}

这不会打印每次迭代的数量而是在循环时转储所有数字....但是当我修改printf时...

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
    printf("%d\n",i);
    sleep(1);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

}

现在,当我添加'\n'新行时,它按预期工作...为什么它在前一个行为奇怪......

c

3
推荐指数
1
解决办法
107
查看次数

如何在C中打印二进制数据?

我对 C 比较陌生。我有一个要打印到标准输出的二进制缓冲区,如下所示:

unsigned char buffer[1024];
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 printf 将其输出到 stdout?我查看了 printf 的手册页,但是没有提到 an unsigned char*,只有const char*for %s

我想我可以遍历缓冲区并执行putchar(buffer[i]),但是我认为这效率很低。有没有办法使用 printf 做到这一点?我应该改用类似的东西fwrite,那会更合适吗?

谢谢。

编辑:抱歉造成混乱,我不想将任何内容转换为十六进制/二进制表示法,只需按原样写出缓冲区即可。例如,如果我[0x41 0x42 0x42 0x41]在缓冲区中,那么我想打印“ABBA”。

c io printf

1
推荐指数
1
解决办法
9115
查看次数

为什么以下程序不会生成任何可见输出?

以下C程序不会在屏幕上打印任何内容.

我编译了程序gcc:

#include<stdio.h>

main()
{
    printf("hai");
    for(;;);
}
Run Code Online (Sandbox Code Playgroud)

c printf

0
推荐指数
1
解决办法
480
查看次数

标签 统计

c ×4

printf ×2

getchar ×1

io ×1

putchar ×1