标签: getchar

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

在c上使用getchar()在输入后获得'Enter'

我正在尝试编写一个简单的程序,要求用户从循环中的菜单中进行选择.我使用getchar()来获取输入,但是我注意到当我输入一个字符并按下'Enter'时,程序会产生两个循环(好像我按两次),一个char作为输入,另一个作为'Enter'作为输入.

我该如何解决?

c getchar

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

使用scanf时getchar不会停止

我很难理解getchar().在以下程序中getchar按预期工作:

#include <stdio.h>


int main()
{
    printf("Type Enter to continue...");
    getchar();
    return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

但是,在以下程序中,getchar不会产生延迟并且程序结束:

#include <stdio.h>

int main()
{
    char command[100];
    scanf("%s", command );
    printf("Type Enter to continue...");
    getchar();
    return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

我有以下的解决方法,这是有效的,但我不明白为什么:

#include <stdio.h>

int main()
{
    char command[100];
    int i;
    scanf("%s", command );
    printf("Type Enter to continue...");
    while ( getchar() != '\n') {
      i=0; 
    }
    getchar();
    return 0;    
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:
1.在scanf做什么?为什么这样scanf做?
2.为什么我的工作在工作?
3.模拟以下Python代码的好方法是什么:

raw_input("Type Enter to continue")
Run Code Online (Sandbox Code Playgroud)

c getchar

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

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

printf打印其他*字符

我有一个非常简单的代码将大写转换为小写:

#include <stdio.h>
int main()
{
char c;
int i=0;
for (i=0;i<10;i++){
    c=getchar();
    c=c-'A'+'a';
    printf("%c\n",c );
    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但运行这个简单的代码总是*在输出时有一个额外的字符.它打印下面的char *.看一看:

D
d
*
D
d
*
E
e
*
Run Code Online (Sandbox Code Playgroud)

这是从哪里来的?

c loops getchar

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

为什么getchar()不读取退格等字符?

这是一个非常基本的C问题,来自Kernighan和Ritchie的第18页.

我编译了这个非常简单的代码来计算从键盘输入的字符:

#include <stdio.h>

/* count characters in input; 1st version */
main()
{
  long nc;

  nc = 0;
  while (getchar() != EOF)
    ++nc;
  printf("%1d\n", nc);
}
Run Code Online (Sandbox Code Playgroud)

这个编译很好,运行正常,并且表现得非常符合预期,即如果我输入"Hello World",当我按下CTRLD以给出EOF字符时,它返回值11 .

令我困惑的是,如果我犯了错误,我可以使用退格键删除字符并重新输入它们,它只返回终端在调用EOF时显示的字符数.

如果代码计算每个字符,包括特殊字符,如果我输入四个字符,删除两个,再输入另外两个,那么输出不应该是8个字符(4个字符+2个del + 2个字符),而不是4个字符?

我显然误解了C如何处理退格,以及代码如何/何时递增变量nc

c getchar

7
推荐指数
2
解决办法
1064
查看次数

getchar()和putchar()

在示例中:

#include <stdio.h>

main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)

我不太明白.putchar()会把角色放出来,但为什么在EOF之后它会把所有的角色都放出来,它在哪里记住所有这些角色?谢谢.

c programming-languages putchar getchar

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

为getchar()添加超时

我需要在程序中为getchar()添加一个超时函数.

我该怎么办,当我的程序到达指令getchar()时,它只会等待一段时间让用户进行击键,如果用户没有在给定的时间限制内进行击键,程序将"跳过"getchar()?

操作系统不支持conio.h库,因此kbhit不是一个选项.

c time timeout input getchar

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

为什么 Ctrl-Z 不会触发 EOF?

为什么Ctrl+Z在下面的小程序中没有触发循环完成?

#include <stdio.h>

main()
{
    int c;
    while ((c = getchar()) != EOF)
    {
        //nothing 
    }

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

如果我输入:test^ZEnter,它不会跳出循环。

我发现了相关问题(此处此处),但没有一个问题可以解释 Windows 下的 C(而不是 C++)。

注意:我在 Windows 8.1 上使用 Visual Studio 2015 PRE

c eof getchar visual-c++

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