标签: putchar

我有两个与getchar()和putchar()有关的问题

#include<stdio.h>

main()
{
char c;
c=getchar();
putchar(c);

c=getchar();
putchar(c);

c=getchar(); 
putchar(c);

c=getchar();
putchar(c);

c=getchar();
putchar(c);

}
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是,每当我们使用getchar()时,它都会在内存中的某个位置创建一个缓冲区,当我们按Enter键时,getchar()开始从缓冲区读取内容,而getchar()一次只能读取一个字符。因此,在上面的程序中,当执行第一个getchar()时,它将在内存中创建一个缓冲区,并且整行内容将存储在缓冲区中,假设当我按下Enter键时我写了“ vik” getchar()开始从缓冲区中读取内容,然后是“ v”将分配给变量c,然后只有'v'将从缓冲区清除,因为getchar()一次仅读取单个字符。然后在下一条语句中,putchar(c)在屏幕上打印“ v”。所以现在“ ik”getchar()语句执行它不会再询问用户写东西,因为除非并且直到缓冲区不会完全刷新,否则它不会再询问用户写东西,而是会从缓冲区读取内容。因此,这里的“ ik”仍然留在黄油中,因此在第二个getchar()语句中,从缓冲区读取“ i”,然后再次从缓冲区中刷新“ i”,putchar(c)打印“ i”。现在'k'在第三个getchar()执行时留在缓冲区中,从缓冲区读取'k'并赋值给c然后'k'也从缓冲区中冲洗掉。此时缓冲区已被完全冲洗掉,缓冲区中没有内容当第四个getchar()将会执行向用户写请求的操作,因为缓冲区中没有内容,所以假设我写“ as”并点击回车。 现在我的主要问题是,当我给两个内容“ as”时,还有两个getchar()和putchar(c)可以执行,那么为什么只有'a'会在屏幕上打印,为什么还没有's'?

而且,我的第二个问题是,如果说使用getchar()时在内存中创建一个缓冲区,那么如果使用fflush(stdin)则必须刷新该缓冲区。所以根据上面程序中的这个,当我在第一个putchar(c)之后而不是冲洗缓冲区之后写fflush(stdin)时,它执行并打印与上面程序相同的输出,为什么?

c putchar getchar

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

使用getchar()和putchar()的非常简单的C问题

您好我正在教自己C并通过K&R书,我遇到了一些麻烦(我正在运行OS X).这是第1.5.1节"文件复制",它应该将一个字符作为输入,然后输出该字符.这是代码:

#include <stdio.h>

/* --  Copy input to output -- */ 
int main(void)
{
int c;

c = getchar();

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


}
Run Code Online (Sandbox Code Playgroud)

所以,我认为我的问题不在于代码本身,而在于编译和运行.首先,在编译时我得到以下错误

/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c: In function ‘main’:
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:12: warning: assignment makes integer from pointer without a        cast
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:16: warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)

然后当我运行输出文件(在终端中)它有一个小空间,然后当我输入一个字母时,说我输入

一个

然后我点击Return

我得到一个新的一行.如果我然后点击一个新密钥,屏幕就会开始变得疯狂,并在整个地方出现问号.

我不确定我是否有多大意义,但我发现这是一个奇怪的问题.非常感谢你提前

c putchar getchar

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

putchar可以打印整数吗?

如何在putchar仅帮助下打印整数.我想在不使用外部存储的情况下这样做.
去年在一次采访中提到了这个问题.

c integer putchar

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

从getchar读取输入

while(1)
{
    if(i == 6)
        break;
    temp[i] = getchar();
    putchar(temp[i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

每当我必须以这种方式使用getchar时,它也接受输入作为输入之一,因此我被限制只输入三个字符而不是6.为什么getchar将输入作为输入之一?怎么避免这个?

输入:

1
2
3
Run Code Online (Sandbox Code Playgroud)

此循环中断后因为按下的三个返回被认为是temp [1],temp [3]和temp [5]的三个输入.

c c++ getch putchar getchar

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

这个c文件处理代码有什么问题?

我正在尝试从终端写入文件中的内容.文件正在创建,但内容未写入文件.

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    int main(int argc, char *argv[])
    {
        FILE *fp;
        fp=fopen(argv[1],"w");
        char ch;
        while((ch=getchar())!=EOF)
        {
           putc(ch,fp);
        }
        fclose(fp);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c file-handling putchar getchar getc

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

当我想要打印数字时,为什么将“0”放入 putchar 函数中

我正在尝试使用 putchar() 函数打印数字。下面是我的代码:

int main(void)
{

    int x = 0;

    for (; x <= 9; x++)
    {
      putchar(x + '0');
    }
    }
    _putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)

如果在没有“+ '0'”的情况下运行,则 shell 上看不到任何结果。

这和ASCII有关系吗?谁能帮忙解释一下幕后发生了什么?

谢谢

c unix ascii putchar

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

为什么这个C代码有意想不到的行为

我编写了以下简单的C代码,它编译并运行良好.但它的行为方式我不明白.我输入一个字符,然后将其打印在屏幕上.但是当我按下返回键时,它会打印整行.因此,如果我键入字母a,b和c,abc将在命令行上打印两次.这是为什么这样做的?

#include <stdio.h>


int main(){


    int c;
    while((c=getchar())!=EOF){
        putchar(c);
    }

return 0;

}
Run Code Online (Sandbox Code Playgroud)

c putchar getchar

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

C中的3位数发生器

我正在尝试生成每个可能的3位数组合,如: 012, 013 ,014...

但是:我想忽略重复的字符(如999或022),我也不想重复使用数字(如果123已经存在,则不显示321)所以,最后一个值应该是789.

我的代码:

int main()
 {
    int i;
    int j;
    for(i=1;i<(1<<9);i++)
    {
        for(j=0;j<9;j++)
        {
            if ((1<<j)&i) printf("%d\n",j+1);
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

我希望我的结果如下:

012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 789
Run Code Online (Sandbox Code Playgroud)

另外,我不应该使用任何函数,而是printf/putchar.

c printf numbers putchar

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

使用getchar()来存储数字

我有一个任务,我应该在C中创建一个简单的算术计算器,它接受一个数字,一个运算符和一个第二个数字的输入并执行操作并输出它.听起来很简单吧?

我只限于使用getchar()和putchar()来输入数字.这意味着我必须一次读取整个输入一个字符...而我很困惑我将如何读取一个数字的两个字符(例如91的"9"和"1")作为一个数字.如果从右到左阅读getchar(),这将是一个不同的故事.但不幸的是,它不是......

我会感激任何指针!

c math calculator putchar getchar

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

指向二维数组的指针

考虑以下代码:

int main()
{
    static char wer[3][4] = {"bag","let","bud"};
    char (*ptr)[4] = wer;

    putchar(*(*(ptr+1)+2));
    putchar(*(wer[1]+2));
    putchar(*(ptr+1)+2);

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

第一个和第二个putchar()语句指向第一行的第一个元素ie e(考虑0作为基本位置),而在第3个putchar()语句中,它显示垃圾值.
但就声明而言,(*(ptr+1))显然意味着指向第二排.为什么会这样?
这是由于某些putchar()规范,还是我完成了指针概念?

c pointers putchar

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

为什么 getchar() 函数在循环中工作不同?

#include <stdio.h>
int main()
{
    char c;

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

为什么当我输入诸如“omar”之类的文本时,将 char print“omar”放回去。它不应该重复打印“o”吗,因为 getchar 只会采用第一个字符。我知道我错了,可能是因为我不知道 getchar 或 putchar 到底是如何工作的,所以有人可以解释一下它们是如何工作的吗?另一个问题为什么 getchar 和 putchar 在没有 while 循环的情况下正常工作,但在 while 循环内行为有所不同。

c while-loop putchar getchar

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

getchar() 和 putchar() 宏如何?

根据我对 C 中宏的理解,它们是预定义的常量,将在整个程序中使用它们的常量值,所以我们继续定义它们以避免进一步的复杂性并使代码更具可读性,因此人们阅读它会明白什么应该保持不变,什么不是。

我在这里和那里读过(C 编程现代方法,KN King)我们可以将这两个函数定义为宏。

由于我对 C 有点陌生,我无法理解这两个如何定义为宏?

c putchar getchar c-preprocessor

-2
推荐指数
1
解决办法
758
查看次数