2014-12-27 59 views
-2
typedef struct 
{ 
    char podrucje[32]; 
    char opis[128]; 
}kvar; 

typedef struct 
{ 
    char ime_podnosioca[16]; 
    char prezime_podnosioca[16]; 
    kvar k; 
    int popravljeno; 
}prijava; 
void main() 
{ 
    prijava prijave; 
    printf("Unesite ime i prezime podnosioca:\n"); 
    scanf("%s%s",prijave.ime_podnosioca, prijave.prezime_podnosioca);  
    printf("Unesite podrucje koje obuhvata kvar:\n::>"); 
    gets(prijave.k.podrucje); 
    printf("Unesite opis kvara:\n::>"); 
    gets(prijave.k.opis); 
} 

我調試應用程序,我得到這個錯誤後,這裏是截圖:http://www56.zippyshare.com/v/83042434/file.html獲取功能overleaped

+2

您使用已過時並已知會導致問題的函數('gets'),並且您想知道爲什麼有問題?你的問題到底是什麼? – 2014-12-27 14:09:51

+1

使用'void main()','gets()'等是一個糟糕的主意。我知道你正在拼命地等待一個解決方案。只需在'scanf()'後添加'getchar()',問題就會消失! – 2014-12-27 14:25:50

回答

2

有兩點值得關注:

  • gets是一個邪惡的和不再存在標準C.使用fgets代替。

  • 使用scanffgets在一起時,因爲scanf葉緩衝輸入的下一個電話\n字符閱讀功能,你應該小心。這個\nfgets讀取後scanf函數。

0

我已經添加了一個獲取,現在它的工作。

typedef struct 
    { 
     char podrucje[32]; 
     char opis[128]; 
    }kvar; 

    typedef struct 
    { 
     char ime_podnosioca[16]; 
     char prezime_podnosioca[16]; 
     kvar k; 
     int popravljeno; 
    }prijava; 
    void main() 
    { 
     prijava prijave; 
     printf("Unesite ime i prezime podnosioca:\n"); 
     scanf("%s%s",prijave.ime_podnosioca, prijave.prezime_podnosioca);  
     printf("Unesite podrucje koje obuhvata kvar:\n::>"); 
     gets(prijave.k.podrucje); 
     **gets(prijave.k.podrucje);** 
     printf("Unesite opis kvara:\n::>"); 
     gets(prijave.k.opis); 
    }