- 締切済み
関数の型
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」にすればエラーは出ないんですが、大きさを指定したいので・・・ どうかよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taka077
- ベストアンサー率0% (0/0)
#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()へ返してみました。
- arain
- ベストアンサー率27% (292/1049)
>char *buf[80]; は「char型のポインタ」を80個用意するという宣言になります。 入力した文字列をchar型の80Byteの配列に格納したいのであれば、宣言は char buf[80]; となります。 ちなみに、 >printf(buf); これ、標準関数のprintf()のことなら、内容表示されませんよ。
お礼
ご回答ありがとうございます。 回答者様の言われる通り、 「char *buf[80]」は「char buf[80]」の間違いです。 また、printfもおかしいですね・・・。 とりあえず、キーボードからの入力した文字列を返す関数を作成したいんです・・・。
お礼
ご回答ありがとうございます。 >size = gets(buff); の箇所でエラーになってしまいました・・・。 説明がきちんと出来ていなかったせいかもしれないですが、 要は、大きさを指定した文字配列の入れ物を引数として、 キーボードから入力された文字配列を返す関数が作成したいんです。 ・・・この説明文も分かりづらいかもしれないですが・・・