2017-12-07 23 views
1

マニュアル変換。10進数へのテキストC

たとえば、入力= ax、なぜ 'a'(97)のdecはいつも無限ループですか?

'x' decと 'e'に移動できませんか?

//project text to ASCII Dec 
#include <stdio.h> 

main(){ 
    char i=0, data, a; 

    printf("Enter data : "); 
    scanf("%s", &data); //or %c 

    while(data != i){ /* can't out from this loop I mean to the next letter of word */ 
     a = data; 
     printf("%d", data); // or printf("%d", a); 
     if(data != 0){ 
     printf("-"); 
     } 
    } 
} 
+4

入力と期待される出力 –

答えて

2

あなたはそれが唯一の単一文字の値を保持することができることを意味し、タイプcharとしてdataを宣言した('A'」、'1''0''\n'、など)。あなたはdataに(例えば"axe"または"foo"または"Supercalifragilisticexpialidocious"など)文字列を格納することができるようにしたい場合は

、あなたはchar配列としてdataを宣言する必要がありますし、配列のサイズは、である必要がありますあなたが保存しようとする最長の文字列の長さよりも長い少なくとも1:無限ループについては

#define STRING_LENGTH 20 // store strings *up to* 20 characters long 
... 
char data[STRING_LENGTH + 1]; // +1 for the 0 terminator that marks 
           // the end of the string 

'a'(97)がi(0)に等しいことはありません、あなたはEIの値を更新したことがありませんループ内のエンティティ。ループのたびに更新する必要があります。ここで私はあなたのためになるだろう考えるものです:

if (fgets(data, sizeof data, stdin)) // safer than using scanf 
{ 
    for (size_t i = 0; data[i] != 0; i++) 
    { 
    printf("%d ", data[i]); // print out character encoding value 
    } 
} 

このコードは、ユーザが文字列入力を受け取り、整数として、各文字(ASCII、EBCDIC、UTF-8、何でも)のエンコード値を出力します。

+1

Webster'sまたはOxford'sで「Supercalifragilisticexpialidocious」が見つかりませんか?ポピンズの多分? –

+0

'for'ループはエラーC99です。その後、私は 'size_t'を削除しようとします。それは動作します。 –

+0

@TegarBangunSuganda:申し訳ありませんが、C99以降で働いていました。 C89以前では、ループの外側で 'i'を宣言しなければなりません。 –

関連する問題