0

重複の可能性:
C での文字列の反転

私は現在、プロジェクトのために C++ から C プログラミングに切り替えていますが、Char 配列を文字列としてあまり扱っていません。char 配列へのポインターを読み取り、それを逆にする関数が必要です。私はこれを C++ で書きました。これは文字列関数を使用すると非常に簡単ですが、これを行うための最良の方法である関数または何かが C にあるかどうかについて少し混乱しています。ありがとう、私は必ずしもコードを完全に完成させる人を探しているわけではありませんが、正しい方向に向けてくれます。シンプルな一行なら何でも構いませんが、不快に感じるようなことはしないでください。

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

void reverseString(char *myString)
{
    //reverse string here
}

int main(void)
{
    char myString[] = "This is my string!";
    reverseString(myString);

    return 0;
}
4

1 に答える 1

3

最も簡単な方法: 文字列 char を char ごとにループし、各 char を別の char 配列に逆の順序で挿入します。

またはこれを試してください:2)

void reverse_string(char str[])
{
    char c;
    char *p, *q;

    p = str;
    if (!p)
        return;

    q = p + 1;
    if (*q == '\0')
        return;

    c = *p;
    reverse_string(q);

    while (*q != '\0') {
        *p = *q;
        p++;
        q++;
    }
    *p = c;

    return;
}

3)

if( strlen( str ) > 0 ) {
   char* first = &str[ 0 ];
   char* last = &str[ strlen( str ) - 1 ];
   while( first < last ) {
       char tmp = *first;
       *first = *last;
       *last = tmp;
      ++first;
      --last;

4)

char* strrev( char* s )
  {
  char  c;
  char* s0 = s - 1;
  char* s1 = s;

  /* Find the end of the string */
  while (*s1) ++s1;

  /* Reverse it */
  while (s1-- > ++s0)
    {
    c   = *s0;
    *s0 = *s1;
    *s1 =  c;
    }

  return s;
  }
于 2012-12-10T05:49:16.353 に答える