• 締切済み

関数の型

C言語の勉強をしております。 以下のように、入力用の関数を作成し、入力された文字列を返して欲しいんですが、「1 番目の引数を 'char *[80]' から 'char *' に変換できません。」という警告メッセージが出てしまい、解決出来ません・・・。 原因と解決策を教えていただけないでしょうか? ちなみに環境はWindowsXP、コンパイラはVC6.0です。 #include <stdio.h> char *insertName(char *buf); int main(void) { char *buf[80]; buf = insertName(buf); printf(buf); return 1; } char *insertName(char *buf) { gets(buf); return buf; } mainの「buf」の定義を「char *buf」にすればエラーは出ないんですが、大きさを指定したいので・・・ どうかよろしくお願いいたします。

みんなの回答

  • taka077
  • ベストアンサー率0% (0/0)
回答No.2

#include <stdio.h> void main(void); int insertName(char buff[]); void main(void) { char buff[80]; int size; size = insertName(buff); if(size > 0){ printf("%s", buff); } } int insertName(char buff[]) { int size; size = gets(buff); return size; } これでどうですか? gets()のところは、ya-chaさんがどうしたいのか分かりませんが...。 >大きさを指定したいので・・・ 勝手にinsertName()で取得したgets()の戻り値をそのままmain()へ返してみました。

ya-cha
質問者

お礼

ご回答ありがとうございます。 >size = gets(buff); の箇所でエラーになってしまいました・・・。 説明がきちんと出来ていなかったせいかもしれないですが、 要は、大きさを指定した文字配列の入れ物を引数として、 キーボードから入力された文字配列を返す関数が作成したいんです。 ・・・この説明文も分かりづらいかもしれないですが・・・

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>char *buf[80]; は「char型のポインタ」を80個用意するという宣言になります。 入力した文字列をchar型の80Byteの配列に格納したいのであれば、宣言は char buf[80]; となります。 ちなみに、 >printf(buf); これ、標準関数のprintf()のことなら、内容表示されませんよ。

ya-cha
質問者

お礼

ご回答ありがとうございます。 回答者様の言われる通り、 「char *buf[80]」は「char buf[80]」の間違いです。 また、printfもおかしいですね・・・。 とりあえず、キーボードからの入力した文字列を返す関数を作成したいんです・・・。

関連するQ&A

専門家に質問してみよう