我正在编写一个程序,它基本上只需要一堆用户输入并以检查的形式输出它。我的问题是我输入了2个句子,而第二个句子很好,它完全跳过了第一个句子!并且用户的姓氏正在起作用,但是第一个名字只输出“z”,这是最奇怪的事情,我的老师理念是自己想出来的。所以有人可以帮我吗?这是我的代码......
#include<stdio.h>
#include<string.h>
int main()
{
char date[8];
int checkNum;
char payeeFirst[10];
char payeeLast[10];
double amount;
char memo[50];
char wordAmount[100];
printf("Please enter the date: ");
scanf("%s", &date);
printf("Please enter the check number: ");
scanf("%d", &checkNum);
printf("Please enter the payee First name: ");
scanf("%s", &payeeFirst);
printf("Please enter payee last name: ");
scanf("%s", &payeeLast);
printf("Please enter amount: ");
scanf("%d", &amount);
printf("Please enter amount in words: ");
fgets (wordAmount, sizeof(wordAmount)-1, stdin);
printf("Please enter memo: ");
fgets (memo, sizeof(memo)-1, stdin);
printf(" \n");
printf("Date: %s .\n", date);
printf("Check Number: %d .\n", checkNum);
printf("Payee: [%s] [%s] .\n", payeeFirst, payeeLast);
printf("Amount: %d .\n", amount);
printf(" Check %d \n", checkNum);
printf(" Date: %s \n", date);
printf("Pay to the\n");
printf("Order of %s %s $%d \n", payeeFirst, payeeLast, amount);
printf("%s", wordAmount);
printf(" \n");
printf(" \n");
printf("Memo: %s \n", memo);
return 0;
}
答案 0 :(得分:1)
您的scanf
个来电全部离开了'\n'
流(下一个scanf
会忽略它。)
第一个fgets
读取一个空字符串(好吧......一个包含单个'\n'
的字符串)。
尝试将fgets
的数字(到临时缓冲区)和sscanf
从缓冲区读取到正确的变量。这样,所有'\n'
都将被计算在内。