2016-08-05 55 views
0

Ich versuche, den Wert der Variablen char mov_name[51] und date_select[51], die in der Startscreen-Funktion ist meine Hauptfunktion übergeben, und die Variablen werden später als Zeichenfolge ausgegeben. Das Programm läuft, aber die Ausgabe ist nicht das, was es sein sollte. Jede Hilfe würde sehr geschätzt werden!Fehler beim Übergeben von Wert über 2 Funktionen in C

void startscreen(char mov_name[51],char date_select[51]); 

void startscreen(char mov_name[51],char date_select[51]) 
    { 
      scanf("%s", &mov_name); 
      fflush(stdin); 

      scanf("%s", &date_select); 
      fflush(stdin); 
    } 

void main() 
{ 
     char mov_name[51], date_select[51]; 
     startscreen(mov_name ,date_select); 

     printf("%s %s", mov_name, date_select); 

} 

enter image description here

+2

Stapelüberlauf funktioniert nicht so. Code muss in der Frage selbst sein. Siehe [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). – user3386109

+0

okay, wird es ändern – usercfg

+0

Fertig editieren: D – usercfg

Antwort

2

Die Funktion int scanf(const char *format, ...) liest Eingaben von stdin in dem angegebenen Format (documentation here). Das Problem ist, dass Sie eine char ** anstelle von char * an scanf übergeben. mov_name und haben Typ char *. Das kaufmännische Und-Zeichen & nimmt die Adresse move_name und data_select, was zu einem char ** führt.

+0

Also, wenn ich die Größe von 'mov_name' und 'date_select' ändern, z. B. 5, würde der Fehler korrigiert werden? – usercfg

+0

nein. wenn Sie scanf ("% s", & mov_name); 'zu' scanf ("% s", mov_name); 'und' scanf ("% s", & date_select); 'zu' scanf ("% s", date_select); 'Der Fehler wird korrigiert. Wenn Sie die Größe von 'mov_name' und' data_select' ändern, ändert sich ihr Typ nicht, was 'char *' ist. –

+0

Bekam es, danke für die Erklärung :) – usercfg