• ベストアンサー

エラーの原因が分かりません。

Cをはじめたのですが、次で、 実行時にエラーとなってしまいます。 (「問題が発生したため・・」とでます)。 コンパイルは出来るのですが、 どこが悪いのでしょうか。 #include <stdio.h> char sendstr(); int main(){ char myc=sendstr(); printf("%s",myc); printf("HELLO"); return 0; } char sendstr(){ char mychar='s'; return mychar; }

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

%sは、文字列(char *)を要求しますが、 プログラムでは、 charを渡しています。 #1の方のようにするか 関数名通り文字列であるなら #include <stdio.h> char *sendstr(void); int main(){ char *myc=sendstr(); printf("%s",myc); printf("HELLO"); return 0; } char *sendstr(void){ static char *mychar="s"; return mychar; } とかしてみたらどうでしょう

noname#12299
質問者

お礼

ありがとうございます。 %cでうまくいきました。 実は、はじめ文字列を扱おうと 思っていたのですが、 変数の受け渡しがうまくいかず 困っていたのです。 この回答を参考にやってみます。

その他の回答 (2)

回答No.3

> char myc=sendstr(); > printf("%s",myc); charをプリントする書式指定は %s ではありません。

noname#12299
質問者

お礼

ありがとうございます。 %cでうまくいきました。 char型なんて、C以外では、 なかなか扱わないので、大変です。

  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

検証はしていないのですが, >printf("%s",myc); ここの%sを%cにしてみてはいかがでしょうか?

noname#12299
質問者

お礼

ありがとうございます。 %cにしたところうまくいきました。