标签: getchar

如何避免使用getchar()按Enter键

在下一个代码中:

#include <stdio.h>

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

我必须按Enter下来打印我输入的所有字母getchar,但我不想这样做,我想要做的就是按下这封信,然后立即看到我重复介绍的信,而不是按下Enter.例如,如果我按下'a'字母,我想在旁边看到另一个'a',依此类推:

aabbccddeeff.....
Run Code Online (Sandbox Code Playgroud)

但当我按'a'时没有任何反应,我可以写其他字母,只有当我按下时才会出现副本Enter:

abcdef
abcdef
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我正在使用cc -o example example.cUbuntu下的命令进行编译.

c getchar

70
推荐指数
6
解决办法
11万
查看次数

什么等同于Linux中的getch()和getche()?

我无法在Linux中找到conio.h的等效头文件.

在Linux中有getch()&getche()function功能吗?

我想制作一个开关盒基本菜单,用户只需按一个键即可提供选项,并且应该向前移动过程.按下他的选择后,我不想让用户按ENTER键.

c linux getch getchar getc

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

C:如何模拟EOF?

我目前正在阅读K&R的书并在第一部分中输入示例,并且有几个例子如下:

while((c = getchar()) != EOF) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

我正在Windows框中测试这些示例,从而从cmd提示符运行已编译的exe文件.

要测试上面的例子,我该如何模拟EOF?也就是说,从命令提示符测试示例时,基本上如何使循环停止?

c kernighan-and-ritchie eof getchar

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

我想了解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万
查看次数

Golang函数类似于getchar

是否有类似getchar能够在控制台中处理标签按下的功能?我想在我的控制台应用程序中完成某种完成.

console go getchar

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

getc Vs getchar Vs Scanf用于从stdin读取字符

以下三个功能:

getc getchar&scanf

从stdin读取角色的最佳选择是什么?为什么?

这些功能中是否存在任何已知的缺点或限制,这使得一个功能优于另一个功能?

c scanf character getchar getc

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

int c = getchar()?

好的,所以我正在读这本书:C编程语言 - 由Kernighan和Ritchie(第二版)和其中一个例子我很难理解事情是如何工作的.

#include <stdio.h>

#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

int main(int argc, char *argv[])
{
    int len;

    int max;
    char line[MAXLINE];
    char longest[MAXLINE];

    max = 0;
    while((len = getline(line, MAXLINE)) > 1)
    {
        if(len > max)
        {
            max = len;
            copy(longest, line);
        }
    }
    if(max > 0)
        printf("%s", longest);

    getchar();
    getchar();
    return 0;   
}

int getline(char s[], int lim)
{
    int c, i;

    for(i = 0; i < lim - 1 …
Run Code Online (Sandbox Code Playgroud)

c getchar

22
推荐指数
3
解决办法
5万
查看次数

为什么getchar()不等我在scanf()后按Enter键?

我正在学习C,我正在使用"getchar()"来停止命令窗口,所以我可以看到练习正在进行,但它只是不起作用.下面是一个样本:

#include <stdio.h>

int main()
{
    int value;
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
    scanf("%d", &value);
    switch (value)
    {
        case 1:
            printf("you selected the option 1.");
            break;
        case 2:
            printf("you selected the option 2.");
            break;
        case 3:
            printf("you selected the option 3.");
            break;
        case 4:
            printf("goodbye");
            break;
        default:
            printf("thats not an option");
            break;
    }
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

  1. 选项1.
  2. 选项2.
  3. 选项3.
  4. 出口.

做出选择:1

您选择了选项1.

进程返回0(0x0)执行时间:3.453秒

按任意键继续.

为什么不等待"getchar()"的输入?

c getchar

16
推荐指数
3
解决办法
4万
查看次数

对getchar()函数感到困惑

getchar()对以下代码中的角色感到困惑.我的意思是我知道它帮助我看到输出窗口,只有在按下Enter键时才会关闭.

所以getchar()基本上等着我按回车然后再读一个字符.

这个函数读取的单个字符是什么?我没有按键盘上的任何键来阅读.

现在当它没有读任何东西的时候,为什么它没有给出一个错误,说"嘿,你没有输入任何东西供我阅读"?

#include <stdio.h>

int main()
{
    printf( "blah \n" );
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c getchar

16
推荐指数
3
解决办法
9139
查看次数

为什么我需要两次键入Ctrl-D来标记文件结尾?

char **query; 
query = (char**) malloc ( sizeof(char*) );

int f=0;
int i=0,j=0,c;


while((c=getchar())!=EOF)
{      
    if(!isalpha(c))
        continue;

    if(f==1)
        query=(char**) realloc(query,(i+1)*sizeof(char*));

    query[i]=(char*) malloc(sizeof(char));
    query[i][j]=c;
    j++;


    while( (c=getchar())!=EOF&&c!=' '&&c!='\t' )
    {      

        query[i]=(char*) realloc(query[i],(j+1)*sizeof(char));

        query[i][j]=c;
        ++j;
    }   

    query[i][j]='\0';
    printf("%s\n",query[i]);
    if(c==EOF){

        break;
    }   

   ++i;
   f=1;
   j=0;
}
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码片段读取由空格和制表符分隔的字符串行,直到ONE EOF,但它需要2个EOF才能结束循环.此外,字符串只能由字母字符组成.

我在约2天内挣扎.请提供一些反馈.

编辑:最有可能的原因是我写完最后一个字符串而不是输入键后我按CTRL + D键,但现在我按Enter键然后按CTRL + D,它按预期工作.但是,在按下最后一个字符串后按CTRL + D后,如何将其更改为完成?

c eof getchar

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

标签 统计

getchar ×10

c ×9

eof ×3

getc ×2

character ×1

console ×1

getch ×1

go ×1

kernighan-and-ritchie ×1

linux ×1

putchar ×1

scanf ×1