Store & display user input in ein array in C

Ich versuche die Anzeige und drucken eines word-von der Benutzer-und speichern Sie es in mein array heißt

char word[20]

Aber ich bin Probleme. Ich weiß, dass wir eine „for-Schleife“, um ihn zu Scannen in das array, aber ich behalte Euch im Kreis und ich glaube, das problem ist mit der i < 20.
Ich untersuchte dies und fand, dass die Antworten auf diese Fragen sind sehr erfahrene und ich brauche eine wirklich einfache Weise, es zu tun, ohne extra Zeug. Also alles was ich will ist, um word -, aus dem Benutzer, speichern Sie es und drucken Sie es auf dem Bildschirm.

Kann jemand helfen, ohne erlebt-code?

Code in C

char getWord(char word[]);
int main()
{   
    char word[20];  
    getWord(word);

    return 0;
}

char getWord(char word[])
{ 
    int i;
    printf("Enter a word: ");
    for (i = 0; i < 20; i++) 
    { 
        scanf(" %c", &word[i]);
    }

    return word;
}
InformationsquelleAutor Jagr | 2017-11-22



3 Replies
  1. 6

    Alles, was Sie wollen, ist

    #include <stdio.h>
    
    int main() {
        char word[20];
        scanf("%s", word);    //Read and store
        printf("%s\n", word);    //Print
        return 0;
    }
    • ist das die andere Möglichkeit, statt mit einer for-Schleife?
    • scanf mit %s durchsucht einen string (ohne Leerzeichen oder neue Zeile) in ein char-array. so brauchen Sie nicht, zu Scannen jedes Zeichen mit for-Schleife. Ja, dies ist der perfekte Weg, statt der for-Schleife.
    • Aber Wartezeit, dort ist mehr. Sie erhalten auch einen Puffer-überlauf, absolut kostenlos!
    • Tatsächlich, Sie wollen Schutz vor Pufferüberlauf mit scanf("%20s", word)
    • Sollten Sie immer validate die Rückkehr der scanf z.B. if (scanf ("%19s", word) != 1) { /* handle error */ }. Sonst kann man kein Vertrauen printf("%s\n", word); nicht invoke Undefiniertes Verhalten. (@wallyk-es ist "%19s" statt "%20s" — über die array-Grenzen von 1)
    • Vielen Dank für die Hilfe an alle!!! 😀

  2. 0

    Können Sie die Verwendung der Funktion fgets und stellt Lesen und schreiben eine Zeichenfolge.

    #include<stdio.h>
    #define MAX 20
    
    int main()
    {
        int ar[MAX], i, count;
        fgets(ar, MAX, stdin);  //it will accept whitespaces as well
        puts(ar);            //displaying entered string
        return;
    }
  3. -3

    wenn Sie Lesen wollen über Zeichen Ende-Zeichen sollte gesetzt werden, um null-Zeichen für Strings.

    char getWord(char word[]);
    int main() 
    {
        char word[20]
        getWord(word);
    
        printf("%s\n", word);
        return 0;
    }
    
    char getWord(char word[]) 
    {
        int i;
        char c;
        printf("Enter a word: ");
        for (i = 0; i < 19; i++)
        {
            scanf("%c", &c);
            if ( c == '\n' )
                break;
            word[i]=c;
        }
    
        word[i]='\0';
        return word;
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.