質問

このコードの安心に問題があり、小文字を大文字に変更し、複数のスペースを1つのスペースに変える必要があります。それで、それが間違っていること、それは私が「abcdefg」を書いたときの最初の手紙を切ることができます。

main(){ 
int z=0,b;  

        while ( (b = getchar() ) != '\n')
        { 
        b=b-32;
            if (b>0)
            { 
                putchar(b);
            }
            else 
            {
                if (z>=2)
                { 
                    putchar(b);
                }
                else
                { 
                    z=z+1;
                    printf(" ");
                }
            }


        }
}
.

役に立ちましたか?

解決

私のためのすべての文字を生成するようです...あなたがそれをトレースしようとしましたか。

他のヒント

あなたの空のスペースの処理にはいくつかの問題があります。

どのような場合にスペースを印刷するように見えます(GetCharが0x20を返すとき)

あなたのスペースの問題を解消するためにこれから始めることができます。 それ以外の場合は、特定の問題がありますか。「最初の文字カット」の問題がないからです。

main(){ 
int z=1,b;  

        while ( (b = getchar() ) != '\n')
        { 
        b=b-32;
            if (b>0)
            { 
                putchar(b);
                z=1;
            }
            else 
            {
                if (z>=2)
                { 
                    putchar(b);
                }
                else
                { 
                    z=z+1;
                    printf(" ");
                }
            }


        }
}
.

最初に "32"のような定数を使用していないはずではなく、代わりにシステムに値が何であるかを定義させる必要があります。IE:b - = char( '');

2番目の関数 "islower()"と "toupper()"とcを見ると自動的にあなたのためにそれを実行します。

このようなものを考慮してください:

を含む

main() {

    int     flag = 0;
    char    b;

    while ((b=getchar()) != '\n') {
            if (flag && isspace(b))
                    continue;
            putchar(toupper(b));
            if (isspace(b)) {
                    flag = 1;
                    continue;
            }
            flag = 0;
    }
    putchar('\n');
.

}

入力:「A BC DEF GHIJGHG 123 A1B2C3」

出力:「A BC DEF GHIJGHG 123 A1B2C3」

注:入力行には空白がたくさんあるため、テキストボックスがスペースを除去しているように見えます。

常にあなたの境界条件を知っているべきです。入力が開始されたら、束のスペースがまだ1つのスペースを印刷します。すべての先行スペースを排除するには、フラグ= 1を初期化します。入力に末尾のスペースがある場合は、最終的なスペースも印刷されます。あなたがスペースと別の印刷可能な文字を見ると、わずかに異なる解決策を必要とするでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top