1

文字列値を逆の順序で出力しようとすると、コンソール画面に空白の出力が表示されます。文字列値を印刷するためにforループを使用すると、印刷されますが、%sを使用して単純に印刷すると、印刷されませんか?なんで?

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

void main()
{
    char name1[10],name2[10];
    int i,len,j;

    clrscr();

    printf("\nEnter the string that u want to get reversed:");
    scanf("%s",&name1);
    for(i=0;name1[i]!='\0';i++);
    len=i;

    j=i;

    for(i=0;i<=len;i++)
    {
        name2[i]=name1[j];
        j--;
    }

    printf("\nThe reversed string is:");
    printf("%s",name2);
    getch();
}
4

3 に答える 3

3

元の文字列のnullcharターミネータを最初の文字として配置することにより、逆の文字列を開始します。したがって、これprintf()に関する限り、それは空の文字列(長さゼロ)です。

それとは別に、これには深刻なコードレビューが必要です。適切な引数を確認すると、全体が書き直される可能性があるため、これは正直なところ場所ではありません(おそらく最初scanf()と最後を除くprintf()。デバッガーでこのステップバイステップを実行して、何が起こっているかを確認することを強くお勧めします。コードが実行されます。

于 2012-11-24T03:16:50.720 に答える
1

あなたへのいくつかのメモ:

  • 投稿する前にコードを適切にフォーマットしてください
  • 変数値を表示するには、あまりにも多くの「printf」を使用しました。つまり、コードを適切にデバッグする方法がわからないということです。コードをデバッグする方法+「使用しているIDE名」(fe。CODE VISUAL STUDIOをデバッグする方法)をグーグルで検索してください。
  • 常にコードにコメントを追加してください
  • そのplsGOOGLEのようなものを最初に投稿する前に!「文字列を逆にする」問題は、典型的な「プログラミング入門」の割り当てであり、そのためのサンプルコードを見つけるのは難しくありません。最初のコード調査は、でたらめなコードをランダムに入力するよりも便利です
  • 変数にもっと意味のある名前を付ける必要がありますfeあなたの場合'src'と'target'はname1とname2よりもはるかに良い選択ですもちろんそのような短いコードでは重要ではありませんができるだけ早くそれに慣れてください
  • コーディングを開始する前に、視覚化のために最初に紙でそのような問題を解決してみてください
  • ユーザーからの入力を読み取ることで動的文字列コンテンツを処理しようとするため、修正配列を使用するよりも動的割り当て、つまりmalloc()/ free()を使用することをお勧めします。
于 2012-11-24T03:55:35.623 に答える
0

標準のstring.hライブラリのstrrev関数をいつでも使用できます

于 2012-11-24T03:18:41.190 に答える