标签: putchar

我想了解getchar()!= EOF

我正在阅读C语言程序,并且到目前为止已经理解了所有内容.然而,当我遇到getchar()并且putchar(),我无法理解它们的用途,更具体地说,以下代码的作用.

main()
{
    int c;
    while ((c = getchar()) != EOF)
       putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

我理解main()函数,整数的声明cwhile循环.然而我对while循环中的条件感到困惑.这个C代码的输入是什么,输出是什么.

对不起,如果这是一个基本而愚蠢的问题,但我只是在寻找一个简单的解释,然后再继续阅读本书并变得更加困惑.

c putchar eof getchar

33
推荐指数
4
解决办法
6万
查看次数

为什么putchar,toupper,tolower等采用int而不是char?

在C中,字符串是char(char *)数组,字符通常存储在其中char.我注意到libC中的一些函数将作为参数整数而不是char.

例如,让我们的职能toupper()tolower()两个使用int.手册页说:

如果c不是无符号字符值或EOF,则这些函数的行为是未定义的.

我的猜测是,有一个int,toupper并且tolower能够处理unsigned charEOF.但实际上EOF是在实践中(有没有关于它的值的规则?)一个可以用a存储的值char,并且由于这些函数不会转换EOF成其他东西,我想知道为什么toupper不简单地将char作为参数.

在任何情况下,为什么我们需要接受不是字符的东西(例如EOF)?有人能为我提供相关的用例吗?

这与fputc或类似putchar,也可以将int其转换为unsigned char无论如何.

我正在寻找这种选择的确切动机.我想说服,我不想回答,我不知道有一天有人问我.

c putchar toupper tolower

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

putchar()奇怪的输出,为什么会发生这种情况?

如果我在标准输入流中键入"Hello World"字样,该程序将打印出奇怪的盒子符号,而不是预期的"Hello World",返回标准输出.

#include <stdio.h>

int main(void)
{
    // print out all characters from the stream until '/n' character is found
    int ch;
    while (ch = getchar() != '\n')
    {
        putchar(ch);
    }
    putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)

我知道如何解决这个问题.但为什么这行代码不正确?

while (ch = getchar() != '\n')
Run Code Online (Sandbox Code Playgroud)

c io operator-precedence putchar getchar

11
推荐指数
4
解决办法
1793
查看次数

putchar()vs printf() - 有区别吗?

我目前在1.5.1文件复制中,并制作了一个类似的程序:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我像这样运行它:

PS <..loc..> cc copy-0.c
PS ./a
Black
Black
White
White
Gray
Gray
Run Code Online (Sandbox Code Playgroud)

输出是我输入的.

这是我为实验目的而制作的一个程序:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        printf("%c",c);
        c = getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

它产生相同的结果但是putchar和之间存在差异printf吗?

两者之间哪个更好用?

c printf putchar getchar

9
推荐指数
2
解决办法
2万
查看次数

如何在C中打印没有库函数的变量的charcater,字符串或值?

例如,如果我不应该使用像printf,putchar这样的标准库函数,那么如何轻松地将字符打印到屏幕上.有没有简单的方法来做到这一点.我不太了解系统调用,如果我必须使用它们,那么如何?

那么任何一个建议都可以轻松打印而不使用库函数?

c printing printf character putchar

8
推荐指数
3
解决办法
8098
查看次数

什么做putchar('0'+ num); 做?

我试图了解它是如何putchar('0' + r);工作的.下面,该函数采用整数并将其转换为二进制.

void to_binary(unsigned long n)
{
   int r;
   r = n % 2;
   if (n >= 2)
      to_binary(n / 2);
   putchar('0' + r);
}
Run Code Online (Sandbox Code Playgroud)

我谷歌putchar的定义,但我没有找到这个.为了测试它,我添加了一个printf来查看r的值:

void to_binary(unsigned long n)
{
   int r;
   r = n % 2;
   if (n >= 2)
      to_binary(n / 2);
   printf("r = %d and putchar printed ", r);
   putchar('0' + r);
   printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

然后我运行它(键入5)并获得此输出:

r = 1并且putchar打印1
r = 0并且putchar打印0
r = 1并且putchar打印1

所以我认为putchar('0' + r); 如果r = 0 …

c putchar

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

getchar()等效于scanf("%c")和putchar()等效于printf("%c")?

a = getchar()相当于scanf("%c",&a);

putchar(a)等同于printf("%c",a);其中a是一个char变量?

c scanf putchar getchar

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

Putchar和Getchar在C中

我正在阅读K&R的The C Programming Language,并对putchar和getchar感到困惑.我制作了一个程序,你输入10个字符,程序将它们打印回屏幕.

#include <stdio.h>

int main() 
{
    int i;
    int ch;
    for(i = 0; i < 10; i++)
    {
        printf("Enter a single character >> ");
        ch = getchar();
        putchar(ch);
    }

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

我希望得到这样的输出:

Enter a single character >> a
a
Enter a single character >> b
b
Run Code Online (Sandbox Code Playgroud)

...等等10次,但这是我得到的输出:(进入2个字符后我停止了)

Enter a single character >> a
aEnter a single character >>
Enter a single character >> b
bEnter a single character >>
Enter a single character >>
Run Code Online (Sandbox Code Playgroud)

不确定为什么我的输入字符与固定字符串组合并被输出.

另外,我不太清楚为什么使用int来存储字符.

c kernighan-and-ritchie putchar getchar

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

C编程语言,第1章练习1.10(Getchar和Putchar)

我已经在这个工作了2个小时而且我被卡住了...我在网上找到了答案,但这不会帮助我学习我显然缺少的概念.

提示:编写程序将其输入复制到其输出,替换每个选项卡\t,每个退格键\b和每个反斜杠\\.这使得标签和退格以明确的方式可见.

这是我提出的,它没有替换a tab\与指示putchar,它只是在它前面添加它.(我没有做退格,因为我无法真正输入退格...):

这就是我阅读代码的方式.我错过了什么?:

"有一些整数c.c等于输入.当输入不等于文件结束时继续.如果输入是tab然后输出\t.如果输入\则输出\\.输入输出到控制台."

int c;

while((c=getchar())!=EOF)
{
    if(c=='\t')
        {
            putchar('\\');
            putchar('t');
        }

    if(c=='\\')
        {
            putchar('\\');
            putchar('\\');
        }
    putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

c putchar getchar

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

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
查看次数