-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
は変更不可能になり、それが仕事に逆転機能に不可能だろう
'strdup'はすでに' sent'の内容を 'copy'のバッファにコピーしていますか? – nbro
文が文字列リテラルを指しています。それは修正されないものとする。 – 2501
ところで、あなたは 'reserver'から常に' NULL'を返しています。あなたのforループも見ていませんが、これらはすでに修正しなければならないいくつかのバグです。 – nbro