2017-08-16 20 views
0

printfの後の行( "enter nation \ n"); to printf( "mまたはf \ nを入力");それは私が..この問題の間には何も入力するためのチャンスがないと一緒に2行を表示してコードブロックは、常に私は次の3行を参照してくださいカント構造体C:構造体の使用

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
struct emp 
{ 

int salary; 
int age; 
char name[10]; 
char m:1; 
char nation:1; 

}; 
int main() 
{ 
int i,k; 
char g,n; 
char name2[10]; 
struct emp x[3]; 
for(i=0;i<3;i++) 

    { 
     printf("enter name\n"); 
     scanf("%s",&name2); 
     strcpy(x[i].name,name2); 


     printf("enter salary\n"); 
     scanf("%d",&x[i].salary); 
     printf("enter age\n"); 
     scanf("%d",&x[i].age); 



      printf("enter nation\n"); 

使用するときに起こるそれを見ることができないように実行していませんジャンプは、それらのライン、変更する必要があまりにも

  scanf("%c",&g); 
      if(g=='f'){x[i].m=0;} 
      else if(g=='m'){&x[i]==1;} 



    } 

    for(k=0;k<3;k++) 
     { 
      if(x[i].nation=='e') 
      { 
       puts(x[i].name); 
       printf("%d\n",x[i].salary); 
       printf("%d\n",x[i].age); 
       if(x[i].m==0) 
       printf("female\n"); 
       else {printf("male\n");} 
       printf("egyptian"); 

       } 


     } 

return 0; 

} 
+1

につながる: 'X [i]は.nation == 0;'を評価します'bool'私はあなたが' x [i] .nation = 0; ' – ihpar

+1

' x [i] .nation == 'e''を意味すると思いますか? '&x [i] == 1;'? – BLUEPIXY

答えて

2

を参照してくださいカント

  scanf("%c",&n); 
      if(n=='e'){x[i].nation==0;} 
      else {x[i].nation==1;} 

      printf("enter m or f\n"); 

メートルまたはfを入力します

scanf("%c",&n); 

scanf(" %c",&n); // Skip leading whitespaces 

char name2[10]; 

のためにあなたは単にやる参照オペレータに

scanf("%s",&name2); 

を使用するように持っていけないので、Cで

配列は、ポインタで渡されます

また
scanf("%s",name2); // Will pass an arrays address 

、入力を制限する、または発生する可能性がバッファオーバーフローするとよいでしょうし、それはまた、未定義の動作

scanf("%9s",name2); 
関連する問題