-3

このコードを試しましたが、forループでは何もしないようです。

#include <stdio.h>
#include <stdlib.h>

void main()
{

    char word[100];
    char suf [100];
    int i,j,k = 0;
    char a [100];

    printf("Enter the word: \n");
    gets(word);
    printf("\n");



    for (i = strlen(word); i < 0; i--)
            {
                 a[i] = word[i];
                 printf("%s",a);

            }
}

出力例:

>> 次の単語を入力してください: プログラム

>>m

>>午前

>>ラム

>>グラム

>>グラム

>> プログラム

4

2 に答える 2

1

ALTERNATIVE : ポインター アプローチを使用します。

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

int main(int argc, const char * argv[])
{
    char word[100];

    printf("Enter the word: \n");
    gets(word);
    printf("\n");
    char *ptr;
    int len = (int)strlen(word) ;

    for (int i = len -1; i > 0; --i)
    {
        ptr = &word[i];
        printf("%s\n",ptr);

    }
    return 0;
}

説明 :

入力した文字列がprogram 現在、インデックスの範囲は 7 ではなく 0 から 6 の範囲であるとします。コードでは、どちらから始めてi = strlen(word)いるかが間違っています。から始める必要がありi = strlen(word) -1ます。

また、あなたのケースのようにの値iがより大きくなるまでデクリメントする必要があります。0i < 0

提案:

使用しないでくださいvoid main(……)。を使用しint main(…)ます。前者はすべてのコンパイラでサポートされているわけではありません。

于 2014-08-05T15:10:33.230 に答える
1

これを行うには、おそらくポインター演算を使用するのが最も簡単な方法です。一時バッファさえ必要ありません。

for (i = strlen(word) - 1; i > 0; --i) {
    printf("%s\n", word + i);
}
于 2014-08-05T15:02:34.203 に答える