2016-12-03 4 views
-2

に表示します。この関数はputchとcputsのみを使用できます。 少し奇妙に思えるかもしれませんが、これは私の仕事です。 そして機能atoiとitoaは大歓迎です。 あなたに何か考えがあるなら、ぜひご参加ください。私はCからの単純なライブラリを使わずにintを表示する必要があるので、基本ライブラリのないintを

+2

使用。 – BLUEPIXY

+0

どのような形式が必要ですか?たとえば、N +の場合は、数字の前に '+'を付けるか、スペースだけを入れるか、何もしませんか? – ivand58

答えて

0

intを文字列表現にするにはitoaを使用します。 putsを使ってその文字列を出力します。ここで

+0

私は次のようなことをしています: \t char X [2]; \t char Y [2]; \t itoa(myintX、X、10); \t itoa(myintY、Y、10); – Eken

+0

そして、2より長いint値を表示する方法。たとえば、 の数値が0から9までは正しく表示されますが、より高い数字は表示されません。 – Eken

+0

より大きい 'char'配列を使用してください。 –

1

itoaの実装です:

/* strlen: return length of string s */ 
int strlen(char *s) 
{ 
    int i; 
    while (*s++) i++; 
    return i; 
} 

/* reverse: reverse string s in place */ 
void reverse(char s[]) 
{ 
    int c, i, j; 

    for (i = 0, j = strlen(s)-1; i<j; i++, j--) { 
     c = s[i]; 
     s[i] = s[j]; 
     s[j] = c; 
    } 
} 

/* itoa: convert n to characters in s */ 
void itoa(int n, char s[]) 
{ 
    int i, sign; 

    if ((sign = n) 0) /* record sign */ 
     n = -n;   /* make n positive */ 
    i = 0; 
    do {  /* generate digits in reverse order */ 
     s[i++] = n % 10 + '0'; /* get next digit */ 
    } while ((n /= 10) > 0);  /* delete it */ 
    if (sign 0) 
    s[i++] = '-'; 
    s[i] = '\0'; 
    reverse(s); 
} 

あなたはこのようにそれを呼び出すことができます。itoa`が、その後 `cputs`を使用し`

int main(void) 
{ 
    int x = 1024; 
    char s[100]; 

    memset(s, 0, sizeof(s)-1); 
    itoa(x, s); 

    for (i = 0; i < strlen(s); i++) 
     putchar(s[i]); 
} 
+0

OPは 'itoa'を使用することができます。それを再発明する必要はありません。 –

+0

@ScottHunter 'itoa'は標準ライブラリ関数ではありません。実際、ほとんどのシステムで実装されていますが、標準ではありません。 –

+0

"atoiとitoaの機能は大歓迎です。" –

関連する問題