• ベストアンサー

strcatについて

関数内でstrcatを使って連結した文字列を返り値としてmainに返したいんですが、なかなか上手くいきません。 どなたかアドバイスお願いします。 ちなみに作ろうとしているプログラムは、main内の10進データを関数内で2進データに変換して、またmainに返すものです。 strcatを使わなくてもできる方法があれば、それでもかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

... dat = malloc(8); *dat = '\0'; /* 追加 */ ...

nitta
質問者

お礼

なるほど。言われてみると納得できますね。 かなり助かりました!ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

あなたのコードを見せてください。 どう'うまくいかない'かを説明してください。

nitta
質問者

補足

mallocを使って領域確保をする方法でやってみました。 一応値の受け渡しはできますが、関数の中で変な文字が連結されてしまいます。領域を確保したところで与えられる初期値だと思いますが、取り除く方法がわかりません。 かなり初歩的な質問だと思いますが、宜しくお願いします。 #include<stdio.h> #include<string.h> #include<stdlib.h> char *HENKAN2(unsigned char data) { char *dat; int num=128; dat = malloc(8); while(num>=1) { if(data >= num) { strcat(dat,"1"); data = data - num; } else { strcat(dat,"0"); } num=num/2; } return dat; } char HENKAN10(char *dat) { unsigned char data=0; int num=128; while(num>=1) { if(*dat=='1') data=data+num; dat++; num=num/2; } return data; } main() { unsigned char data; char *dat; printf("data入力\n"); scanf("%c",&data); printf("変換前10進数では%d\n",data); dat = HENKAN2(data); printf("変換後2進数では%s\n",dat); data = HENKAN10(dat); printf("変換後10進数では%d\n",data); free(dat); }

すると、全ての回答が全文表示されます。

関連するQ&A