在下一个代码中:
#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下的命令进行编译.
我无法在Linux中找到conio.h的等效头文件.
在Linux中有getch()&getche()function功能吗?
我想制作一个开关盒基本菜单,用户只需按一个键即可提供选项,并且应该向前移动过程.按下他的选择后,我不想让用户按ENTER键.
我目前正在阅读K&R的书并在第一部分中输入示例,并且有几个例子如下:
while((c = getchar()) != EOF) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
我正在Windows框中测试这些示例,从而从cmd提示符运行已编译的exe文件.
要测试上面的例子,我该如何模拟EOF?也就是说,从命令提示符测试示例时,基本上如何使循环停止?
我正在阅读C语言程序,并且到目前为止已经理解了所有内容.然而,当我遇到getchar()并且putchar(),我无法理解它们的用途,更具体地说,以下代码的作用.
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)
我理解main()函数,整数的声明c和while循环.然而我对while循环中的条件感到困惑.这个C代码的输入是什么,输出是什么.
对不起,如果这是一个基本而愚蠢的问题,但我只是在寻找一个简单的解释,然后再继续阅读本书并变得更加困惑.
是否有类似getchar能够在控制台中处理标签按下的功能?我想在我的控制台应用程序中完成某种完成.
以下三个功能:
getc getchar&scanf
从stdin读取角色的最佳选择是什么?为什么?
这些功能中是否存在任何已知的缺点或限制,这使得一个功能优于另一个功能?
好的,所以我正在读这本书: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()"来停止命令窗口,所以我可以看到练习正在进行,但它只是不起作用.下面是一个样本:
#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.
- 选项2.
- 选项3.
- 出口.
做出选择:1
您选择了选项1.
进程返回0(0x0)执行时间:3.453秒
按任意键继续.
为什么不等待"getchar()"的输入?
我getchar()对以下代码中的角色感到困惑.我的意思是我知道它帮助我看到输出窗口,只有在按下Enter键时才会关闭.
所以getchar()基本上等着我按回车然后再读一个字符.
这个函数读取的单个字符是什么?我没有按键盘上的任何键来阅读.
现在当它没有读任何东西的时候,为什么它没有给出一个错误,说"嘿,你没有输入任何东西供我阅读"?
#include <stdio.h>
int main()
{
printf( "blah \n" );
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 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后,如何将其更改为完成?