2014-03-31 96 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

感谢它的工作,但我很不明白,为什么它的工作。无论如何,你的帮助表示赞赏。 –

相关问题