2016-11-07 10 views
-1

私は文章を取って各単語を逆にするこの関数を持っています。 値をインプレースで変更する必要があり、戻り値はNullにする必要があります。 私はメインを変更することはできません。strtokは非const char引数では機能しません

int main() 
{ 
    char *string= "hello"; 
    reverser(string); 
    printf("%s\n", string); 
} 

を私のreverser機能では、私が必要とstrtokを使用non-const char*

char* reverser(char *sentence) { 
    char *copy = strdup(sentence); 
    char *string; 
    int i, j; 

    for(j = 0; (string = strtok(j ? NULL : copy, " ")) != NULL; j++) 
     for(i = strlen(string) - 1; i >= 0; --i, j++) 
      sentence[j] = string[i]; 
    return NULL; 
} 

でも動作しませんそれをSTRDUP使用して、私は理由を把握することはできません... 誰かがそれを動作させるよう提案していますか? は、そうでない場合stringは変更不可能になり、それが仕事に逆転機能に不可能だろう

+1

'strdup'はすでに' sent'の内容を 'copy'のバッファにコピーしていますか? – nbro

+4

文が文字列リテラルを指しています。それは修正されないものとする。 – 2501

+0

ところで、あなたは 'reserver'から常に' NULL'を返しています。あなたのforループも見ていませんが、これらはすでに修正しなければならないいくつかのバグです。 – nbro

答えて

0

char string[] = "hello";

char *string= "hello";を交換していただきありがとうございます。 (常にNULLを返すと仮定すると)

関連する問題