1

gccで Ubuntu 12.04 LTS を使用しています。この文字型変数が複数のバイトを保持するにはどうすればよいですか? 注 : このプログラムは、入力したすべての文字 (複数) をエコーし​​ます。たとえば、「thilip」と入力すると、「thilip」とエコーされます。各文字は 8 ビット (1 バイト) を保持するため、6 文字 (6 バイト) を入力しました。では、getchar 関数はこの値を 1 バイトしか保持できない文字型変数に代入するにはどうすればよいでしょうか。

#include <stdio.h>
int main(void)
{
    char ch;

    while ((ch = getchar()) != '#')
        putchar(ch);

    return 0;
}
4

3 に答える 3

1

chartype 変数は 1 バイトです。あなたはそれをチェックすることができます

printf("%zu", sizeof(char));  

あなたが入力を与えることについて疑問に思っているなら

asdf  

印刷中です

asdf  

これをch保持しているためasdf、あなたは間違っています。getchar()一度に 1 文字だけを読み取ります。
複数charの を入力すると、この文字セットが入力バッファに格納されます。次に、getchar()この入力バッファから 1 文字ずつ読み取り、char変数chに1 文字ずつ割り当てて、1 文字putchar()ずつ出力します。各反復の後、chによって読み取られた新しい文字によって上書きされgetchar()ます。このコードを実行すると、一度に 1 つしか読み取れない
ことを確認できますgetchar()char

#include <stdio.h>

int main(void)
{
    char ch;
    ch = getchar();
    putchar(ch);

    return 0;
} 

入力:

thilip  

出力:

t  

サイドノート:

getchar()戻りますintchとして宣言する必要がありintます。

于 2013-10-20T18:13:00.817 に答える
0

1バイトです。そうじゃないと思う根拠は?

于 2013-10-20T18:14:33.603 に答える