Lesen Sie einen string als Eingabe mit scanf
Ich bin neu in der C-Sprache, und ich versuche zu Lesen ein Zeichen und ein string (ein Satz; max-Länge von 25) von einem Benutzer.
Nicht sicher, was mache ich falsch im folgenden code-Zeilen, sein gibt mir eine Fehlermeldung "Segment Fault".
#include <stdio.h>
int main(){
char * str[25];
char car;
printf("Enter a character: ");
car = getchar();
printf("Enter a sentence: ");
scanf("%[^\n]s", &str);
printf("\nThe sentence is %s, and the character is %s\n", str, car);
return 0;
}
Dank!
InformationsquelleAutor Hafiz Temuri | 2016-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
str
ist ein array von 25 Zeiger aufchar
ist, und kein array vonchar
. Ändern Sie also seine Erklärung zuUnd Sie können nicht
scanf
zu Lesen, Sätze-es Stoppt das Lesen am ersten Leerzeichen, so verwenden Siefgets
Lesen Sie den Satz stattdessen.Und in Ihrem letzten
printf
müssen Sie die%c
Planer, um Zeichen zu drucken, nicht%s
.Sie müssen auch Spülen, um die standard-Eingabe, weil es eine
'\n'
übrigen instdin
sind, so müssen Sie werfen die Zeichen aus.Dem überarbeiteten Programm ist jetzt
Sie müssten Spülen, um die standard-Eingabe (nicht verwenden
fflush(stdin)
)."
scanf
zu Lesen, Sätze-es Stoppt das Lesen am ersten Leerzeichen" -- Eigentlich ist es möglich (durch uaing die%[
Formatbezeichner).%s
imscanf
Stoppt das Lesen auf dem ersten Leerzeichen. BTW,fgets
Lesen Sie die\n
Links durch diegetchar()
in Ihrem Programm.Ich bin nicht mit fflush(stdin), in der Tat ich weiß nicht mal was das ist lol, ich bin neu in der c-Sprache. Ich denke, dass dies mein 3. oder 4. Programm, das ich je geschrieben in c.
Er arbeitete nun, ich danke Ihnen so sehr 🙂
InformationsquelleAutor stackptr
Haben Sie, um vier änderungen:
Ändern
zu
als Sie möchten ein array von 25
char
s, nicht ein array von 25 Zeiger aufchar
.Ändern
zu
als
getchar()
gibt einint
, nicht einchar
.Ändern
zu
was sagt
scanf
zu'\0'
) oder bis zu einem\n
und speichern Sie es instr
.Ändern
zu
als die richtige Formatbezeichner für eine
char
ist%c
, nicht%s
."ich wünschte, ich können dies ändern, um die beste Antwort" -- natürlich können Sie. Klicken Sie einfach auf das Häkchen neben meine Antwort.
InformationsquelleAutor Spikatrix
//Dies ist die minimale änderung an Ihrem code arbeiten
InformationsquelleAutor Mihajlo Gajic