- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户输入数字后,我的计算器应用程序无法正常工作。所以我在 scanf() 中的 %d 后面添加了 fflush(stdin) 和一个空格。我的问题是我应该只包含 fflush(stdin) 和 %c 之后的空格还是只有其中一个选项就足够了?我正在使用 Macbook,因此我担心如果我漏掉其中一个,它就无法在其他操作系统上运行。
#include <stdio.h>
#include <stdlib.h>
//PROTOTYPE
int operationSwitch(); //Function to calculate total of operand1 and operand2.
int menu(); //Function for main menu.
int iResume(); //Function to continue the program or not.
char iOperation = '\0'; //choices (1-7)
float operand1 = 0; //number 1
float operand2 = 0; //number 2
float operandTotal = 0; //total
int testPrime, counter, prime = 0;
char cContinue = '\0';
char symbol = '\0';
int main(){
menu();
return 0;
}
int menu (){
do {
printf("\nPlease choose an operation: ");
printf("\n(1) Addition\n ");
printf("\n(2) Subtraction\n ");
printf("\n(3) Multiplication\n ");
printf("\n(4) Division\n ");
printf("\n(5) Modulus (integers only)\n ");
printf("\n(6) Test if Prime (integers only)\n ");
printf("\n(7) Exit\n ");
printf("\nChoose (1-7):\t");
fflush(stdin);
scanf(" %c", &iOperation);
} while (iOperation < 49 || iOperation > 55 );
if (iOperation != 54 && iOperation != 55){ //ASCII 55 == 7)
printf("\nEnter number 1:\t");
fflush(stdin);
scanf(" %f", &operand1);
printf("\nEnter number 2:\t");
fflush(stdin);
scanf(" %f", &operand2);
}
operationSwitch();
/*** RESULTS ***/
if ( symbol == '/' && operand2 == 0) {
printf("\n\t-----| Answer: %.2f / %.2f = Undefined |-----\n", operand1,operand2);
} else if (iOperation != 54) {
printf("\n\t-----| Answer: %.2f %c %.2f = %.2f |-----\n", operand1, symbol, operand2, operandTotal);
}
iResume();
return 0;
} //End Menu
/*********************************
SWITCH FUNCTION
*********************************/
int operationSwitch() {
switch (iOperation) {
case 49://1 Addition Ascii 49 == 1 43 == +
operandTotal = operand1 + operand2;
symbol = '+';
break;
case 50: //2 Substraction
operandTotal = operand1 - operand2;
symbol = '-';
break;
case 51: //3 Multiplication
operandTotal = operand1 * operand2;
symbol = '*';
break;
case 52: //4 Division
operandTotal = operand1 / operand2;
symbol = '/';
break;
case 53: //5 Modulus
operandTotal = (int)operand1 % (int)operand2;
symbol = '%';
break;
case 54: //6
prime = 1;
printf("\nEnter number to be tested for prime: ");
fflush(stdin);
scanf(" %d", &testPrime);
for(counter = 2; counter <= (testPrime/2); counter++ )
{
if(testPrime % counter == 0)
{
prime = 0;
break;
}
}
if (prime == 1) {
printf("\n\t| %d is a prime number. |\n", testPrime);
}
else {
printf("\n\t| %d is not a prime number. |\n", testPrime);
printf("\n\t| %d * %d = %d \n", testPrime/counter, counter , testPrime);
}
break;
case 55:
printf("\nGood Bye\n");
exit(0);
break;
default:
printf("\nYou entered: %c - Please try again ", iOperation );
break;
} //End Switch iOperation
return 0;
} //End Switch Function
/*********************************
RESUME FUNCTION
*********************************/
int iResume() {
printf("\nWould you like to try again?\nPress \'Y\' to go to menu,\nor any key to quit?\t");
fflush(stdin);
scanf(" %c", &cContinue);
if (cContinue == 'y' || cContinue == 'Y'){
menu();
} else {
printf("Good Bye!\n" );
}
return 0;
}
最佳答案
fflush(stdin)
是未定义的行为。
int fflush(FILE *ostream);
ostream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.
关于c - 我应该在 scanf() 中同时包含 fflush(stdin) 和空格,还是只包含其中之一就足够了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205697/
我有以下代码可以完全按预期工作: from subprocess import Popen process = Popen( ["/bin/bash"], stdin=sys.stdi
我有一个关于 php-cli 的新问题。 我正在使用这个: define("STDIN", fopen('php://stdin','r')); $input = ""; while($input =
这个问题在这里已经有了答案: Can fseek(stdin,1,SEEK_SET) or rewind(stdin) be used to flush the input buffer inste
我正在编写一个 python 程序,它将所有输入都大写(替代非工作 tr '[:lowers:]' '[:upper:]')。语言环境是 ru_RU.UTF-8,我使用 PYTHONIOENCODIN
自从我发现 fflush(stdin) 不是处理熟悉的“换行潜伏在输入缓冲区中”问题的可移植方法,我一直在使用当我必须使用scanf时如下: while((c = getchar()) != '\n'
当我使用时在 Perl 模块( *.pm )文件中,它不会从键盘读取输入,但是当我使用 时在同一个地方它工作得很好。 为什么我使用时没有得到输入? 最佳答案 STDIN 是记录的文件句柄。还有 st
stdin 是否是一个指针,正如我在 fgets() 中看到的那样。 我使用“0”作为标准输入的读取或写入错误,并在 fgets 期间出现段错误。 STDIN宏和0是否相同。 stdin 是文件指针吗
我想知道 STDIN 和 $stdin 之间是否有任何真正的区别。我在 irb: STDIN == $stdin 并返回 true。它们只是同一事物的两个名称吗?还是有什么不同? 最佳答案 来自 Ru
有没有一种简单的方法可以将内容通过管道传输到编辑器原子? 例如: echo "Content." | atom 不幸的是atom没有获取到内容。当前版本的 gedit 具有参数 - 以启用读取 STD
这个问题已经有答案了: Using fflush(stdin) (7 个回答) 已关闭 9 年前。 我有一个这样的测试代码 #include #include #include int main
我有一个 bash启动 scp 的脚本通过以下方式: echo "${SCP_PASS:-$PASSWORD}" | ( exec 3<&0; scp -qp ${SCP_PORT:+-P$SCP_P
我正在创建一个 NASM 汇编代码来从标准输入读取文件中存在的二维数字数组我正在运行这样的可执行文件 -> ./abc < input.txt . 之后,我将在终端上显示读取的二维数组,然后我想获取箭
这是一个循环,它重复地从 stdin 获取两个字符并输出它们。 char buf[2]; while (1) { printf("give me two characters: ");
我有一个 golang 程序,可以为 jq 做一个简单的 repl。 .我希望能够在程序启动时从 stdin 读取输入到一个临时文件中,这样我就可以将 repl 与管道输入一起使用。 cat file
有没有非阻塞的 PHP 从 STDIN 读取: 我试过了: stream_set_blocking(STDIN, false); echo fread(STDIN, 1); 还有这个: $stdin
这实际上与我已经回答的另一个问题有关。这个问题在这里:Redirecting stdout of one process object to stdin of another 我的问题是(我认为)获取
我只是一个java初学者,目前正在大学学习,但由于某些原因我不会深入,我无法询问我的导师。 我在 Netbeans 中使用 StdIn 库时遇到问题。在类里面我们使用 DrJava,但由于我无法让它在
Ruby 有两种引用标准输入的方法:STDIN 常量和$stdin 全局变量。 除了我可以将不同的 IO 对象分配给 $stdin 因为它不是常量(例如,在我的 child 中 fork 重定向 IO
我是 Pythonizer 的作者我正在尝试将 CGI.pm 的代码从标准 perl 库转换为 Python。我在 read_from_client 中看到这段代码: read(\*STDIN, $$
我正在使用 laravel 5.6 并遇到问题,当我在控制台中使用命令“php artisan vendor:publish”时,出现以下错误: [ERROR] Use of undefined co
我是一名优秀的程序员,十分优秀!