c - Scanf 不起作用

标签 c char printf character scanf

在我的代码中,第二个 scanf 不起作用,无法读取该字符。 我该如何解决这个问题?

#include <stdio.h>
int main() {
int a, result;
// ***************** Menu *******************
printf("Hello !!! \n The Operations That This Calculator Can Do :");
printf("\n1. Simple Operations");
printf("\n2. Calculate The Biggest Number");
printf("\n3. Taylor expansion");
printf("\n4. Sum Digits Of a Number");
printf("\n5. Found The Prime Numbers Before The Number That You Entered");
printf("\nEnter The Number Of Operation That You Want : ");
scanf_s("%d", &a);
if (a == 1){
    char ch;
    int num1, num2;
    printf("\n Please Enter Your Operation Like That (- 5 3 ) : ");
    scanf_s("%c", &ch);
    if (ch == '-'){ scanf_s("%d", &num1); scanf_s("%d", &num2); result = num1 - num2; printf("\n > %d", result); }
    if (ch == '+'){ scanf_s("%d", &num1); scanf_s("%d", &num2); result = num1 + num2; printf("\n > %d", result); }  }  return 0; }

最佳答案

尝试这个:我将 scanf_s() 更改为 scanf 并为 %c 提供空间,因为 %c 转换说明符不会自动跳过任何前导空格,因此如果输入流中存在杂散换行符(来自上一个条目,例如)scanf 调用将立即消耗它。

#include <stdio.h>
int main() {
int a, result;
// ***************** Menu *******************
printf("Hello !!! \n The Operations That This Calculator Can Do :");
printf("\n1. Simple Operations");
printf("\n2. Calculate The Biggest Number");
printf("\n3. Taylor expansion");
printf("\n4. Sum Digits Of a Number");
printf("\n5. Found The Prime Numbers Before The Number That You Entered");
printf("\nEnter The Number Of Operation That You Want : ");
scanf("%d", &a);
if (a == 1){
char ch;
int num1, num2;
printf("\n Please Enter Your Operation Like That (- 5 3 ) : ");
scanf(" %c", &ch);
if (ch == '-'){ scanf(" %d", &num1); scanf(" %d", &num2); result = num1 - 
num2; printf("\n > %d", result); }
if (ch == '+'){ scanf(" %d", &num1); scanf(" %d", &num2); result = num1 + 
num2; printf("\n > %d", result); }  }
system("pause"); }

关于c - Scanf 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43637255/

相关文章:

c - 如何在 C 中打开文件以读取和写入其他文件?

c - c 中不寻常的结构

c - Realloc - Realloc 不会生成更小的 char*

c - 为什么这会创建两个输入而不是一个

java - 字符串到字符数组,显示愚蠢的字符

c++ - 从用户提供的路径中删除前导 "../"

c++ - 在动态分配内存时使用指定大小

c++ - 将 std::string 转换为 const char* 供 printf 消费

C 'restrict' 基于关键字的优化

c - % 后面的文本不打印