関数、引数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bybykin
記事: 4
登録日時: 3年前

関数、引数について

#1

投稿記事 by bybykin » 3年前

現在本を見ながらc言語の関数と引数について勉強しているのですが、その本に載っているプログラミングを
そのまま入力してもエラーが出てしまいます。
原因はその本で推奨している環境(virtual boxとbagrant)と自分の環境(visual studio)の違いによるもの
だと思うのですが、もしvisual studioでもこのプログラミングが動かせるような設定の変更などを
知っている方がいたらと思い投稿しました。
一度見ていただけたら嬉しいです。

結果が↓のようになると思うんですが、エラーが出てしまいます。

関数を呼び出します
岬さんこんにちは
赤城さんこんにちは
海道さんこんにちは

コード:


#include <stdio.h>



typedef char String[1024];


void hello(String name) 
{
	printf("%sさんこんにちは",name);
}



int main(void){

	printf("\n関数呼び出し\n");
	hello("岬");                  
	hello("赤城");
	hello("海道");

	rewind(stdin);
	getchar();
	return 0;
}


Rittai_3D
記事: 525
登録日時: 11年前

Re: 関数、引数について

#2

投稿記事 by Rittai_3D » 3年前

どういったエラーが出ていますか?
当方Windowsの環境がないので確認ができませんが、表示されたエラーを正確に載せていただけると原因が調べやすくなります。
結果が↓のようになると思うんですが、エラーが出てしまいます。

関数を呼び出します
岬さんこんにちは
赤城さんこんにちは
海道さんこんにちは
hello()内のprintf()に改行コードがないので、改行されません。
初心者です

Butter
記事: 18
登録日時: 3年前

Re: 関数、引数について

#3

投稿記事 by Butter » 3年前

typedef char String[1024];

typedef const char* String;
に変えて見てはいかがでしょうか
(初心者なので見当違いなことを言っているかも知れません)
とても暇で忙しい

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 関数、引数について

#4

投稿記事 by あたっしゅ » 3年前

 Visual Studio 2019(VS2019) だと、

>E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

と出ます。下線が引かれている E0167 をクリックすると、ネット検索されます。で、一番最初に出てきた

https://teratail.com/questions/118636
const char*とchar*の互換性 - teratail(ja)

には、

>古い C++ (いわゆる C++03) では文字列リテラルを char* に変換するのが許されていたのですが、
>後に (C++11 で) 廃止されたという経緯があります。 更に Visual Stuido はユーザへの便宜のために
>かなり後まで変換を許すように実装していたらしいです。

と、あります。VS2019 では、許さないようになったのでしょう。

 参考になされた本が古いようです。

 解決方法は、

#3>typedef char String[1024];
#3>を
#3>typedef const char* String;

や、元のソースをできるだけ生かすなら、

typedef const char String[1024];

でしょうか。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

box
記事: 2002
登録日時: 13年前

Re: 関数、引数について

#5

投稿記事 by box » 3年前

エラーが出てしまいます。
質問するときの基本事項
単に「エラーが出る」だけでは、何のことやらわかりません。
質問者さんのパソコン画面を見ることができませんので。
肝心なのは「何をしたときに」「どんな」エラーが出るかを「具体的に」書くことです。
そうすれば、回答しようとしている人に質問者さんの状況がかなりハッキリわかると思いますので、
解決への時間が少なくて済むと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

bybykin
記事: 4
登録日時: 3年前

Re: 関数、引数について

#6

投稿記事 by bybykin » 3年前

みなさんありがとうございます!!
アドバイスいただいた通り、

typedef char String[1024];

typedef const char* String;
もしくは
typedef const char String[1024];

に変更でエラーなく実行できました!

少し前に返信していたと思ったんですがエラーかなんかで
できていなかったようです申し訳ありません(^^;

ご意見いただいた通り次からは出たエラーも記載します。
またアドバイスいただけたら嬉しいです!
よろしくお願いします。

返信

“C言語何でも質問掲示板” へ戻る