2011-10-27 71 views
1

我正在編寫一個程序,基本上只需要一堆用戶輸入並以支票的形式輸出它。我的問題是,我輸入了2個句子,而第二個句子很好,它完全跳過了第一個!和用戶姓氏正在工作,但名字只是輸出「z」這是最奇怪的事情,我的老師的哲學是自己弄清楚。所以任何人都可以幫助我?這裏是我的代碼...C程序,設計檢查

#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; 
} 
+2

我不認爲你需要&符號時讀取字符串到char []數組。應該只是scanf(「%s」,日期);等編輯:並不需要我的意思是我認爲它破壞你的代碼。 – Akron

+1

如果你使用的是gcc add'-Wall'標誌。它會警告你,當你使用'scanf'不正確。像這裏:http://ideone.com/oD5F4 –

+1

我也會確保你的字符串是空的終止。也許初始化數組的內容爲0; – Akron

回答

1

scanf調用所有的流(上接scanf雖然會忽略它)在離開'\n'

第一個fgets讀取一個空字符串(以及包含單個'\n'的字符串)。

嘗試從fgets(到臨時緩衝區)和sscanf從緩衝區讀取數字到正確的變量。這樣所有的'\n'都會被計入。