2011-02-21 17 views
0

例:リバース文字列を文字列で印刷しますか?

  • のHello World

  • olleH dlroW

私はstrtokはとstrrev機能を一緒に使用しようとしましたが、私はできませんでした。 私は文字列を逆にすることはできますが、上記の例のように単語単位ではできません。

+0

私はstrtokとstrrevを使用しようとしました。でもできなかった。 @Michael Petrotta – boykins

+0

あなたが試したこと、コード、そして遭遇した問題について説明してください。より詳細な詳細。 –

答えて

1

まず、最初から(マークをつけて)始める。空白または文字列の末尾にヒットしたら、位置をマークして次のようにします。

逆参照(現在の位置から最後のマークまで)、ポインタの逆参照時に無効なメモリ位置にヒットしないようにしますそこにあなたのすべての文字を印刷します。手順1に進み、中断したところで新しい開始マークを設定します。

文字列を完全に読み取るまで、前の手順を続けます。

+0

ポインタを使わないでこれをしないでください? – boykins

1

string.hのstrtok()関数を使用して、各トークンを末尾から先頭に表示するだけです。それが困難な場合は、小さなもので問題を解くことが困難と思われる。例えば、文字列を逆順に出力するプログラムを作ってみてください。

コードを入力すると、より良いヘルプを提供することができます。

+0

私はstrrok関数とstrrev関数を一緒に使うと思っていましたが、できませんでした。 – boykins

+0

あなたは多分いくつかのコードを投稿できますか? – Chris

0

使用しているプログラミング言語によって異なります。 C#を使用している場合、

  1. あなたはあなたのdeliminatorとして空白でのstring.Split()メソッドを使用して文字列の配列にあなたの文字列を分割することができます。
  2. 配列内の各文字列を逆順に並べ替えます。
  3. 配列のすべての文字列を連結して、元の文字の逆を作成します。
+0

私はcでタグ付けしました。 – boykins

0

私はあなたが既に尋ねるだけでなく、strtokを設定するのに慣れていると仮定しています。基本的にはstrtokを設定し、NULLを返していない間に戻すポインタをstrrevに渡す必要があります。次に、strtokの終了NULLをスペースで置き換えます。

0

ありがとうございます。私は答えを見つけたと思う、このコードが働いた。

int main() 
    { 
     char string[100]; 
     char*word; 

     printf("your sentence: \n"); 
     gets(string); 
     word=strtok(string," "); 

     while(word!=NULL){ 
     strrev(word); 
     printf("%s ",word); 
     word=strtok(NULL," "); 
     } 
     getch(); 
     return 0; 
    } 
関連する問題