2016-06-22 9 views
-1

の列に複数の単語を含む文字列を変換: はどのように私はこれを取得することができ、私はこの文字列を取り、アレイ内の各単語エントリを作りたい私は次の文字列持っている想像のchar

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

をこのような配列へ:

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

です。 – MikeCAT

+1

あなたの研究努力を時間までに示してください。まず[Ask]ページをお読みください。 –

+1

質問ではなく私のコードリクエストを明記しているので、この質問を議論の対象外としています。まず[Ask]ページをお読みください。 :) –

答えて

2

どちらかあなたが正確に何をしたいかわからないか、あなたは以下の:)

#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; 
} 
たい

プログラムの出力は、あなたが `char型の各要素はinputArray []`であるので `char`を入力し、それが文字列に文字列やポインタを格納することができないことを行うことができません

this 
is 
an 
example 
+0

それは私が欲しかったことですが、私はちょうど質問を表現するのに苦労しています:-) –

+2

@Peterverleg元の配列が関数strtokによって変更されることを考慮してください。それは文字列に0文字を挿入して単語に分割します。 –

+0

入力文字列を2回トラバースするのではなく、 'strtok()'呼び出しでループ内に必要に応じて 'inputArray'のスペースを割り当てる方がよいでしょう。 – pmg

関連する問題