電子書籍の厳選無料作品が豊富!

・数値を文字列化する関数StoAを作成する。
書式:char *StoA(short nVal);
引数:short nVal; 文字列化する数値
戻り値:数字文字列のポインタ
処理:nValで与えられたshort型の数値を文字列に変換し、そのポインタを返す。
呼び出し側の書式は以下の通り。
void main(void)
{
char *pc;
pc = StoA(123);
printf("%s\n", pc);

pc = StoA(-1234);
printf("%s\n", pc);
}

です。明日までの専門学校の課題なのでどうか、どなたか助けて下さい。

A 回答 (1件)

じゃあ、助けてあげよう。

でも、面倒だからていねいな解説は無しね :-)

#include <stdio.h>

char* StoA(short nVal)
{
static char buf[16];
char* p = &buf[0];
char* q;
int i = nVal;
int is_minus = 0;
if (i < 0) {
is_minus = 1;
i *= -1;
}
do {
short a = i % 10;
*p++ = a + '0';
i /= 10;
} while (i > 10);
if (i != 0) {
*p++ = i + '0';
}
if (is_minus) {
*p++ = '-';
}
*p-- = '\0';
q = &buf[0];
while (p > q) {
char c;
c = *p;
*p = *q;
*q = c;
--p;
++q;
}
return buf;
}

int main(void)
{
char *pc;
pc = StoA(123);
printf("%s\n", pc);

pc = StoA(-1234);
printf("%s\n", pc);

pc = StoA(-32768);
printf("%s\n", pc);

pc = StoA(32767);
printf("%s\n", pc);

return 0;
}

1の位から数字を取ってゆき(10で割った余りね)、最後にひっくり返す。

# でも、いまどき void main() って教える専門学校って、どんなもんだか…
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!