2016-06-12 7 views
-1

Ich bin nicht in der Lage, sogar einen einfachen c-Code durch die MingW-Entwicklungsumgebung auszuführen. Dieser Code funktioniert gutnicht in der Lage, ein C-Programm auszuführen, mit MINGW

#include<stdio.h> 
int main(){ 
    char ans[5]; 
    printf("Enter yes or no"); 
    scanf("%s", ans); 
    printf("You just entered", ans); 
    return 0; 
} 

Aber immer, wenn ich den Datentyp am zu char* konvertiere und dann die EXE-Datei ausführen, die

durch den Befehl erstellt wurde
gcc basic.c -o basic.exe 

Ich bin nicht in der Lage, die Ausgabe zu sehen Es sagt nur basic.exe funktioniert nicht mehr. Ich weiß nicht, ob es Probleme bei der Installation im MingW oder was gibt.

+0

Geben Sie ein Codebeispiel (vollständiger Code, wenn es etwa die gleiche Größe hat), die zur Exacution führen. – VolAnd

+0

Dies ist der Code Ich ändere nur 'char [5] ans' zu 'char * ans'. – viveksinghggits

+0

Für den Fall 'char * ans;' siehe die Antwort von Dr.Haimovitz unten. Das Problem ist: Ihr Zeiger zeigt auf "nichts" – VolAnd

Antwort

3

Sie sind nicht eine Ausgabe sehen annehmen, das Programm annehmen, weil Es ist nicht genug, zum Absturz zu ans * auf char zu ändern, benötigen Sie einen Platz für die Zeichenkette zuzuweisen malloc:

ans=malloc(sizeof(char) * 5); 

und auch sollte die printf sein:

printf("....%s",ans); 
+0

... und 'printf (" Sie gerade eingegeben ", ans);' tut nicht, was auch erwartet wird. Wo ist das% s? – John3136

+0

Es gab% s im Code Ich habe nur vergessen, das hier einzufügen, BTW funktioniert jetzt – viveksinghggits

1

Um hat kein Problem mit Speicher betrachten das folgende Beispiel:

#include<stdio.h> 
#include<stdlib.h> 

int main(){ 
    char * ans = NULL; 
    // memory allocation 
    ans = (char*) malloc(5 * sizeof(char)); 
    if(ans == NULL) // check memory 
     return 1; // end of program 
    printf("Enter yes or no : "); 
    // reading input with length limitation 
    scanf("%4s", ans); 
    // string output 
    printf("You just entered %s\n", ans); 
    return 0; 
} 

Wenn Sie mehr als 4 Zeichen eingeben, werden die fünfte und andere übersprungen (im Eingangspuffer).