2014-03-31 27 views
2

此程序要求提供員工姓名,年齡和薪資。有一個小問題,我不知道這是什麼錯誤。當我輸入沒有空格的名字或只是名字時,程序就能正常工作,但只要我輸入空格的全名。該程序只是跳過一些值而不詢問並跳轉到其他值。我知道他們的「worker [i] .name」很少,我也嘗試過%c,但沒有成功。無法在C程序中輸入名稱與空格?

struct employee { 

int pAge; 
float salary; 
char name[30]; 
}; 

int main(void) { 

struct employee worker[2]; 

for (int i = 0; i < 2; i++) { 

    printf("Enter Name of %d employee: ", (i+1)); 
    scanf(" %s", worker[i].name); 

    printf("Enter Age of %d employee: ", (i+1)); 
    scanf("%d", &worker[i].pAge); 

    printf("Enter Salary of %d employee: ", (i+1)); 
    scanf("%f", &worker[i].salary); 
} 
printf("\n"); 

printf("List of All workers\n\n"); 
printf("Age\tSalary\t\tName\n"); 

for (int i = 0; i < 2; i++) { 
    printf("%d\t%.2f\t\t%s\n", worker[i].pAge, worker[i].salary, worker[i].name); 
    } 
} 
+1

你怎麼能指望當用戶完成錄入知道嗎? – SLaks

+0

@SLaks當用戶按下Enter時。 –

+0

你想讓你的代碼的下一行運行? – SLaks

回答

1

它非常簡單隻需用這個代替:

scanf(" %[^\n]s", worker[i].name); 
+2

任何支持文檔/引文/參考文獻/說明? –

+0

感謝它的工作,但我很不明白,爲什麼它的工作。無論如何,你的幫助表示讚賞。 –

相關問題