gpt4 book ai didi

c - scanf 不接收数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:10 25 4
gpt4 key购买 nike

我正在学习 C 入门类(class),但遇到了数据输入问题。我正在做一个子程序练习,我的代码看起来是正确的,但程序中的一个问题由于某种原因被绕过了,我无法弄清楚。

1) 程序读入 ISBN 书号作为 10 个单独的字符(检查)

2)程序读入一本书的价格(勾选)

3)程序读入一个类(class)的学生人数(勾选)

4) 程序询问这本书是更新版本还是旧版本(不工作!!)

5) 程序询问是否需要或建议这本书(勾选)

我正在使用 char 来处理有关新的或旧的、要求的或建议的问题,正如我们假设的那样,以便利用我们目前学到的知识。

我不明白为什么其中一个问题被绕过了。

这是我的输出:

Enter ISBN: 1231231231

Enter list price per copy: 54.99

Enter expected class enrollment: 45

Enter N for new edition or O for Older edition:
Enter R for Required or S for Suggested: R



ISBN: 1-23-123123-1

List Price: 54.99
Expected enrollment: 45
Edition, New or Old:

Importance, Required or Suggested: R

如您所见,第 4 个问题的 scanf 被忽略了。这是我到目前为止编写的代码。非常感谢任何帮助。
谢谢。

#include <stdio.h>

#define WHOLESALE 80

void getInput(char* a, char* b, char* c, char* d, char* e,
char* f, char* g, char* h, char* i, char* j,
float* listPrice, int* numStudents, char* edition, char* importance);
void calc();
void calcBooks();
void calcProfit();
void output();


int main (void) {
// Local declarations
float listPrice;
int numStudents;
char edition;
char importance;

// ISBN char variables:
char a; // 1
char b; // 2
char c; // 3
char d; // 4
char e; // 5
char f; // 6
char g; // 7
char h; // 8
char i; // 9
char j; // 10

// Get input
getInput(&a, &b, &c, &d, &e, &f, &g, &h, &i, &j, &listPrice,
&numStudents, &edition, &importance);



// Calculate



// Output
printf("\nISBN: %c-%c%c-%c%c%c%c%c%c-%c\n", a, b, c, d, e, f, g, h, i, j); // ISBN output
printf("\nList Price: %6.2f", listPrice);
printf("\nExpected enrollment: %d", numStudents);
printf("\nEdition, New or Old: %c", edition);
printf("\nImportance, Required or Suggested: %c", importance);

return 0;
} // main


/* =============== getInput ==========================================
Gets input from the user.
Pre: addresses for ISBN (in seperate characters)
and for listPrice, numStudents, importance, and edition.
Post: Passes back values thru the addresses.
*/
void getInput(char* a, char* b, char* c, char* d, char* e,
char* f, char* g, char* h, char* i, char* j,
float* listPrice, int* numStudents, char* edition, char* importance)
{
printf("\nEnter ISBN: ");
scanf("%c%c%c%c%c%c%c%c%c%c", a,b,c,d,e,f,g,h,i,j);

printf("\nEnter list price per copy: ");
scanf("%f", listPrice);

printf("\nEnter expected class enrollment: ");
scanf("%d", numStudents);

printf("\nEnter N for new edition or O for Older edition: ");
scanf("%c", edition);

printf("\nEnter R for Required or S for Suggested: ");
scanf("%c", importance);




return;
} // getInput

最佳答案

“正常”scanf 转换说明符(%d、%e、%s)跳过前导空格。 %c 转换说明符没有。

要强制跳过空格,请在格式字符串中包含一个空格:

scanf(" %c", &edition);

否则 scanf 将读取您用于上一行的 [ENTER]

关于c - scanf 不接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com