--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2006.09.04

第130夜

再び超私信・・・。

後でまた直しますが、とりあえず(笑)。
ちょっと直してみました。
freeのエラーは私の環境だけの可能性もあるので試してみてください。

/* stdafx.hは私の環境だと必要ですが、ちょmけんさんの環境だといらないと思います。 */
#include "stdafx.h"
#include "stdlib.h"

char* func(short data);

/* 入力チェックなどの各種エラー処理を行っていません。 */
/* 取り合えず動くものを作ったので、かなり適当な作りになっています。 */
int main(int argc, char* argv[])
{
short data = 0;
scanf("%d", &data);

char* ans = func(data);

printf("%s\n", ans);

/* メモリ開放 */
/* 必要な処理だがエラー・・・なんか忘れてるのかな */
/* このメモリ開放は今はエラーになりますが、行えるようにしなければなりません。 */
free(ans);
}

char* func(short data) {
short calc0 = 0;
short calc1 = 1;
int calc2 = 1;
short keta1 = 0;
short keta2 = 0;
short check = 0;

/* 負数チェック */
if (data < 0) {
check = 1;
calc0 = data * -1;
} else {
check = 0;
calc0 = data;
}

/* 桁数算出 */
while (1) {
calc1 = calc0 / calc2;
if (calc1 != 0) {
keta2++;
calc2 *= 10;
} else {
break;
}
}

/* メモリ生成 */
/* 呼出側で開放忘れ注意 */
char* p = NULL;
if (check == 0) {
p = (char*) calloc (keta2, sizeof(char));
} else {
keta2 += 1;
p = (char*) calloc (keta2, sizeof(char));
}

int i = 0;
calc2 = 10;

/* 変換処理 */
for (i = 0; i < keta2; i++) {
calc1 = calc0 % calc2;
calc0 = calc0 / calc2;
p[keta2 - i - 1] = calc1 + 48;

/* 終端処理 */
if (i == (keta2 - 1)) {
p[i + 1] = '\0';
}
}

/* 負数処理 */
if (check == 1) {
p[0] = '-';
}

return p;
}
この記事へのトラックバックURL
http://hexagram.blog41.fc2.com/tb.php/131-98a2829f
この記事へのトラックバック
この記事へのコメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。