2017-07-31 10 views
-3

このコードは、プログラムを再実行するまでは正常に動作するようです。それでも動作するようですが、次のテキストセットを入力する行の先頭には「-10」があります。私は肯定的ではありませんが、問題はprintfに私が言うことができるものから見えます。誰も私がこれを理解するのを助けることができますか?ありがとうございました! ご迷惑をおかけして申し訳ございません...このプログラムが何をすべきかを説明するリクエストに応じます。 '#'記号まで入力を受け取り、対応する8進数のASCIIコードで印字することになっています。プログラムを再実行しようとすると、このコードが-10になるのはなぜですか?

printf("-%d ", ch); 

#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#define COUNT 8 

int main(int argc, const char **argv) 
{ 
    char ch; 
    int charcount; 

    while((ch = getchar()) != '#') 
    { 
     putchar(ch); 
     printf("-%d ", ch); 

     charcount++; 
     if(charcount % COUNT == 0) 
      printf("\n"); 
    } 

    return 0; 
} 
+0

受信したテスト入力、期待される出力、出力を編集して追加してください。また、デバッガを使用することを強くお勧めします。 –

+0

'printf(" - %d "、ch);' – BLUEPIXY

+3

ASCII値10の改行文字 '\ n'の序数を出力しています。 –

答えて

0

10は新しい改行( '\ n'、Enterキー)の値です。 Enterキーを除外したい場合は、ループの開始直後にこれを追加してください:

if(ch == '\n') continue; 
+0

ありがとうございます!私は他の人の章に入っています。あなたは私の問題を解決し、他の答えで私はなぜそれがspittig 10だったのか理解しています。 – MAD

+0

ありがとうCRoemheld – MAD

2

あなたprintf文では、マイナス記号、その後linefeedの小数点コードを出力します。あなたはEnterを押しましたか?

+1

でペアを出力できます。 –

+0

はい、私はしました。 CRoemheldには修正があります。ユーザーがprintfなしで入力した文字の横に数値を表示する別の方法はありますか? – MAD

関連する問題