Tag: getchar

程序控制流程无法按预期工作

这是C的问题。 程序控制流程不符合预期。 它要求输入字符,但没有要求输入字符x。 int foo(); int main(int argc, const char * argv[]) { foo(); return 0; } int foo(){ char in; char x; printf(“Do you wanna party \n”); if((in = getchar()) == ‘y’) printf(“Go Sleep!, I was kidding\n”); else printf(“Oh! you are so boaring..\n”); printf(“\nOk, Another Question\n”); printf(“Wanna Go to Sleep\n”); if((x = getchar()) == […]

getchar()不传递EOF,Ctrl + Z不会终止Cygwin上的程序

这是一个简单的程序,计算字符串,符号和单词。 使用Cygwin进行计算一切正常。 但是在启动时,在输入值之后,程序不会打印nc , nw , nl并等待输入更多值。 无论如何,将EOF更改为13(回车)无济于事。 ctrl + Z也很有用:程序停止,写[n]+ Stopped ,其中’n’总是不同的数字。 代码是 #include #define IN 1 #define OUT 0 int main () { char c; int state; int nc, nw, nl; state = OUT; while ((c=getchar()) != EOF) { nc++; if (c == ‘n’) nw++; if (c == ‘\n’ || c == ‘ […]

我想两次getchar,但我不能

int main() { int r, c; r = getchar(); c = getchar(); putchar(r); putchar(c); printf(“\n”); return(0); } 读入r ,程序输出r并退出。 我希望它要求c并输入它但是它怎么没有那样做?

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

我目前在第1.5.1章文件复制中并制作了如下程序: #include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } } 如果我像这样运行它: PS cc copy-0.c PS ./a Black Black White White Gray Gray 输出是我输入的。 这是我为实验目的而制作的一个程序: #include /* copy input to output; 1st version */ main() { int c; […]

while(getchar()!=’\ n’);

我有以下for循环,我提示用户输入一个4位数的针脚并按Enter键。 有人可以向我解释while循环真正在做什么,因为我不完全理解它。 //user input for pin for(i = 0; i < PIN_LENGTH; i++) { printf("Enter digit %d of your PIN: ", i); user_pin[i] = getchar(); while (getchar() != '\n'); //what is this line doing?? }

为什么这个C程序在输出中打印奇怪的字符?

我有以下程序: #include int main() { int ch; while( ch = getchar() != ‘\n’) { printf(“Read %c\n”,ch); } return 0; } 无论我输入什么,我得到: Read 为什么会发生这种情况,我看到的奇怪的是什么? Stackoverflow不会打印奇怪的字符。 你可以在这里看到它: http : //ideone.com/EfZHr

测试getchar()== EOF不能按预期工作

我有一个编写“编写一个允许用户输入最多20个整数的C程序的任务(它将停止接受基于哨兵值或基于达到20个整数限制的数字)。程序应该显示数字以相反的顺序进入。“ 我决定将我的哨兵值设为“EOF”(或CTRL + D / CRTL + Z)。 我的代码有一些非常不稳定的行为: 您必须按两次EOF键(这也会创建一个在数组中计算的空白条目。 第一个条目的第一个数字被截断。 其他一切似乎都行不通,但这显然不是理想的结果。 以下是我的代码。 你能解释一下是什么问题吗? main() { int i,iMax; double dblMean; int x[MAX]; printf(“Please Enter Up to 20 Integers\n”); for (i=0; i “,i+1); if (getchar() == EOF) /* Check for CTRL+D OR CTRL+Z */ break; /* Exit loop if EOF entered :: Must be pressed twice […]

为getchar()添加超时

我需要在程序中为getchar()添加一个超时函数。 我该怎么办,当我的程序到达指令getchar()时,它只会等待一段时间让用户进行击键,如果用户没有在给定的时间限制内进行击键,程序将“跳过”getchar()? 操作系统不支持conio.h库,因此kbhit不是一个选项。

EOF练习1-6 K&R C编程语言

这可以直接从K&R书中获取: !=的优先级高于= ,这意味着在没有括号的情况下,关系测试!=将在赋值=之前完成。 所以声明 c = getchar() != EOF 相当于 c = (getchar() != EOF) 这具有将c设置为0或1的不期望的效果,这取决于getchar的调用是否返回文件末尾。 (更多相关内容见第2章。) 练习1-6。 validation表达式getchar() != EOF是0还是1。 我无法理解如何进行此练习以及了解块引用段落的内容。 我知道EOF是int类型的符号常量,通常保持值-1。 由于负值int在进行比较时永远不能保持与char相同的值,因此需要将其提升为int,然后以某种方式表示文件的结尾。 我也没有上面指定的括号进行比较!=在分配之前完成但是这实际意味着什么? 这个function发生了什么? 我还打印了EOF的值,它是-1,当它说validation它是0还是1时,练习是什么意思?

从控制台读取字符

我编写控制台应用程序,为i​​nt执行几个scanf,之后,我执行getchar: int x,y; char c; printf(“x:\n”); scanf(“%d”,&x); printf(“y:\n”); scanf(“%d”,&y); c = getchar(); 因此,我得到c = ‘\n’ ,尽管输入是: 1 2 a 这个问题怎么解决?