2017-04-01 3 views
0
#include <stdio.h> 
#include <conio.h> 
struct personal 
{ 
    char name[20]; 
    int day; 
    char month[12]; 
    int year; 
    float salary; 
}; 
void main() 
{ 
     struct personal person;/*Name of structure is personal*/ 
     printf("Enter name of employee"); 
     scanf("%s",&person.name); 
     printf("\nEnter day of joining"); 
     scanf("%d",&person.day); 
     printf("\nEnter month of joining"); 
     scanf("%s",&person.month); 
     printf("\nEnter year of joining"); 
     scanf("%d",&person.year); 
     printf("\nEnter salary of employee"); 
     scanf("%f",&person.salary); 
     printf("\nThe details are as follows\n"); 
     printf("Name of employee-%s\n",person.name); 
       ("Date of joining-%d %s 
        %d\n",person.day,person.month,person.year); 
       ("Salary of employee-$%f",person.salary); 
    getch();} 

上記のコードは正しいですか?Cの構造を学習するにはどうすればよいですか? 構造と機能をどのように組み合わせますか?なぜ、コンパイラは、結合の日、月、および年を同時に要求しますか?

答えて

0

従業員の名前を入力しているときに「空白」と入力していますが、名前はchar配列であり、scanfを使用すると他の入力をスキップするためです。 "gets()"関数を使用する方が良いです。したがってコードは次のようになります:

#include <stdio.h> 
#include <conio.h> 
struct personal 
{ 
    char name[20]; 
    int day; 
    char month[12]; 
    int year; 
    float salary; 
}; 
void main() 
{ 
     struct personal person;/*Name of structure is personal*/ 
     printf("Enter name of employee"); 
     /*Replace this line - scanf("%s",&person.name); by*/ 
     gets(person.name); 
     printf("\nEnter day of joining"); 
     scanf("%d",&person.day); 
     printf("\nEnter month of joining"); 
     scanf("%s",&person.month); 
     printf("\nEnter year of joining"); 
     scanf("%d",&person.year); 
     printf("\nEnter salary of employee"); 
     scanf("%f",&person.salary); 
     printf("\nThe details are as follows\n"); 
     printf("Name of employee-%s\n",person.name); 
       ("Date of joining-%d %s 
        %d\n",person.day,person.month,person.year); 
       ("Salary of employee-$%f",person.salary); 
    getch();} 
関連する問題