2016-06-22 5 views
-1

Stellen Sie sich vor ich habe die folgende Zeichenfolge:konvertieren eine Zeichenfolge mit mehreren Wörtern zu einem Array von char

char input[] = "this is an example"; 

Ich möchte diese Zeichenfolge nehmen und jedes Wort einen Eintrag in einem Array zu machen, wie könnte ich dieses in ein Array wie folgt aus:

char inputArray[] = {"this","is","an","example"}; 
+6

Sie können das nicht tun, weil jedes Element 'char inputArray []' 'Typ char' ist und es kann Strings noch Zeiger auf Strings nicht speichern. – MikeCAT

+1

Bitte zeigen Sie Ihren Forschungsaufwand bis zur Zeit an. Bitte lesen Sie zuerst die [Ask] -Seite. –

+1

Ich stimme diese Frage als off-topic zu schließen, weil eindeutig eine Code-Anfrage schreiben, keine Frage. Bitte lesen Sie zuerst die [Ask] -Seite. :) –

Antwort

2

Entweder Sie wissen nicht genau, was Sie wollen oder Sie wollen die folgende :)

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

int main(void) 
{ 
    char input[] = "this is an example"; 

    size_t n = 0; 

    for (char *p = input; *p; ) 
    { 
     while (isspace((unsigned char)*p)) ++p; 

     if (*p) 
     { 
      ++n; 
      while (*p && !isspace((unsigned char)*p)) ++p; 
     } 
    } 

    char * inputArray[n]; 

    size_t i = 0; 
    for (char *p = strtok(input, " \t"); p != NULL; p = strtok(NULL, " \t")) inputArray[i++] = p; 

    for (i = 0; i < n; i++) puts(inputArray[i]); 

    return 0; 
} 

Die Programmausgabe ist

this 
is 
an 
example 
+0

Das ist was ich wollte, ich habe es nur schwer, Fragen zu formulieren :-) –

+2

@Peterverleg Berücksichtigen Sie, dass das ursprüngliche Array durch die Funktion strtok geändert wird. Es hat Null-Zeichen in den String eingefügt, um es in Worte zu teilen. –

+0

Vielleicht wäre es besser, den Eingabestring zweimal zu durchlaufen, als wenn man '' inputArray ''nach Bedarf innerhalb der Schleife mit dem Aufruf' strtok() 'reservieren würde. – pmg