データファイルの作成に関わるトラブル

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

データファイルの作成に関わるトラブル

#1

投稿記事 by constructor2016810 » 8年前

入力ファイルからデータを読み込み、 合計とその平均値を求めるプラグラムをあるテキストから転写し、 ビルドしたところ、 以下のようなエラーがかかってしまいました。 どのようにすれば、 プログラムが動作するようになるでしょうか。 尚、 プログラム作成のためのアプリは Visual Studio Express 2015です。

エラー 1. 関数呼び出しの引数が少なすぎる。
    2. C4047  ’関数’: 間接参照のレベルが ’FILE**' と char[11]で異なっている。
    3. C4024 'fopen_s' の型が1の仮引数および実引数と異なっている。
    4. C2198 'fopen_s'の呼び出しに対する引数が少なすぎる。
    5. C4047 '=' :間接参照のレベルが ’FILE*'とerrno_tで異なっている。
これらのエラーが出たコードのところにメモっておきました。
よろしく、お願いいたします。

コード:


#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int val;
	int sum = 0;
	int cnt;
	FILE *fp;

	if ((fp = fopen_s("indata.dat", "r")) == NULL)                                    /* 1~5のエラーがでたところ*/
	{
		printf(" not found the file-- - indata.dat\n");
		exit(EXIT_FAILURE);
	}
	for (cnt = 0;; cnt++)
	{
		printf(" Inout data>>>");
		scanf_s("%d", &val);
		if (val == 0)
		{
			break;;
		}
		sum += val;
	}

	if (cnt > 0)
	{
		printf("Sum=%d mean=%g\n", sum, (double)sum / cnt);
	}
	fclose(fp);

	return EXIT_SUCCESS;
}

[code]

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: データファイルの作成に関わるトラブル

#2

投稿記事 by usao » 8年前

まず,fopen_s()について調べましょう.

https://msdn.microsoft.com/ja-jp/library/z5hh6ee9.aspx

戻り値の型や,引数の与え方の説明を読んで,
その通りに使うようにしましょう.

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: データファイルの作成に関わるトラブル

#3

投稿記事 by みけCAT » 8年前

オフトピック
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Math

Re: データファイルの作成に関わるトラブル

#4

投稿記事 by Math » 8年前

取り敢えず1箇所なおしたらエラーがなくなった。

コード:

/*
入力ファイルからデータを読み込み、 合計とその平均値を求めるプラグラムをあるテキストから転写し、 
ビルドしたところ、 以下のようなエラーがかかってしまいました。 どのようにすれば、 
プログラムが動作するようになるでしょうか。
 尚、 プログラム作成のためのアプリは Visual Studio Express 2015です。
エラー 1. 関数呼び出しの引数が少なすぎる。
2. C4047  ’関数’ : 間接参照のレベルが ’FILE**' と char[11]で異なっている。
3. C4024 'fopen_s' の型が1の仮引数および実引数と異なっている。
4. C2198 'fopen_s'の呼び出しに対する引数が少なすぎる。
5. C4047 '=' : 間接参照のレベルが ’FILE*'とerrno_tで異なっている。
これらのエラーが出たコードのところにメモっておきました。
よろしく、お願いいたします。
*/
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int val;
	int sum = 0;
	int cnt;
	//FILE *fp;
	FILE *fp;
	//if ((fp = fopen_s("indata.dat", "r")) == NULL) /* 1~5のエラーがでたところ*/
	if ((fp = fopen_s(fp,"indata.dat", "r")) == NULL)
	{
		printf(" not found the file-- - indata.dat\n");
		exit(EXIT_FAILURE);
	}
	for (cnt = 0;; cnt++)
	{
		printf(" Inout data>>>");
		scanf_s("%d", &val);
		if (val == 0)
		{
			break;;
		}
		sum += val;
	}

	if (cnt > 0)
	{
		printf("Sum=%d mean=%g\n", sum, (double)sum / cnt);
	}
	fclose(fp);

	return EXIT_SUCCESS;
}
[/size]

Math

Re: データファイルの作成に関わるトラブル

#5

投稿記事 by Math » 8年前

実行時エラー

コード:

	for (cnt = 0;; cnt++)
ここが気になる。

アバター
沖 滉均
記事: 237
登録日時: 14年前
住所: K県F市

Re: データファイルの作成に関わるトラブル

#6

投稿記事 by 沖 滉均 » 8年前

オフトピック
内容どうこうの前にあなたはまず過去のトピを未解決のまま放置するのをやめましょう(同じ質問を乱立し続けているようですがそこも注意されていますね)
あと、今まで何度もcodeタグで囲ってくださいと言われているにも関わらず囲わない

コード:

と[code]※どちらも開始タグであり囲えていないので、プレビューをしてから投稿する癖をつけましょう。
おかしいのが目に見えてわかるはずです。[/offtopic]
There is no royal road to learning.
codeタグで指定できる言語
画像

tok

Re: データファイルの作成に関わるトラブル

#7

投稿記事 by tok » 8年前

constructor2016810 さんが書きました:入力ファイルからデータを読み込み、 合計とその平均値を求めるプラグラムをあるテキストから転写し、 ビルドしたところ、 以下のようなエラーがかかってしまいました。 どのようにすれば、 プログラムが動作するようになるでしょうか。 尚、 プログラム作成のためのアプリは Visual Studio Express 2015です。

エラー 1. 関数呼び出しの引数が少なすぎる。
    2. C4047  ’関数’: 間接参照のレベルが ’FILE**' と char[11]で異なっている。
    3. C4024 'fopen_s' の型が1の仮引数および実引数と異なっている。
    4. C2198 'fopen_s'の呼び出しに対する引数が少なすぎる。
    5. C4047 '=' :間接参照のレベルが ’FILE*'とerrno_tで異なっている。
これらのエラーが出たコードのところにメモっておきました。
よろしく、お願いいたします。

コード:


#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int val;
	int sum = 0;
	int cnt;
	FILE *fp;

	if ((fp = fopen_s("indata.dat", "r")) == NULL)                                    /* 1~5のエラーがでたところ*/
	{
		printf(" not found the file-- - indata.dat\n");
		exit(EXIT_FAILURE);
	}
	for (cnt = 0;; cnt++)
	{
		printf(" Inout data>>>");
		scanf_s("%d", &val);
		if (val == 0)
		{
			break;;
		}
		sum += val;
	}

	if (cnt > 0)
	{
		printf("Sum=%d mean=%g\n", sum, (double)sum / cnt);
	}
	fclose(fp);

	return EXIT_SUCCESS;
}

[code][/quote]
fopen関数とfopen_sはパラメータの数が違うので注意したほうがいいと思います。
あと細かいところですが・・・。
平均の計算だいじょうぶですか?

Math

Re: データファイルの作成に関わるトラブル

#8

投稿記事 by Math » 8年前

それから質問者さんにお願いがあります。File とか 画像 音が必要な場合それを”忘れないで添付してほしい”という事です。
今回は数値だけですが”もし桁数とか負値指定”があるとか考えなくていいので...

indata.dat

コード:

123
456
789
それと album ボタンの上のコードボタンをおしてcodeで囲んでください。

Math

Re: データファイルの作成に関わるトラブル

#9

投稿記事 by Math » 8年前

FILE処理って意外と難しいよね!

コード:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int val;
	int sum = 0;
	int cnt = 0;
	//FILE *fp;
	FILE *fp;
	errno_t err;

	err = fopen_s(&fp, "indata.dat", "r");
	if (err == 0)
	{
		printf("The file 'indata.dat' was opened\n");
	}
	else
	{
		printf("The file ''indata.dat' was not opened\n");
	}




	//if ((err = fopen_s(fp,"indata.dat", "r")) == NULL)
	//{
	//	printf(" not found the file-- - indata.dat\n");
	//	exit(EXIT_FAILURE);
	//}
	//for (cnt = 0;; cnt++)



                                            // ここのEOFは End Of File という意味
	while(fscanf_s(fp,"%d", &val) != EOF){ // ファイルから数値を読む
                                          // EOF でない限り読み込みなさいとなる
		///printf(" Inout data>>>");     // この辺り結構難しいから
				                        // 定型句として覚えるといいでしょう。
		///scanf_s("%d", &val);

		//if (val == 0)
		//{
		//	break;
		//}



		sum += val; cnt++; // 合計値
	}

	if (cnt > 0)
	{
		printf("Sum=%d mean=%g\n", sum, (double)sum / cnt);
	}
	fclose(fp);

	return EXIT_SUCCESS;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: データファイルの作成に関わるトラブル

#10

投稿記事 by みけCAT » 8年前

Math さんが書きました:FILE処理って意外と難しいよね!
ファイルが開けなくてもファイルを読み込もうとするバグを埋め込むことで、難しいことを示しているのですね。
面白い表現ですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Math

Re: データファイルの作成に関わるトラブル

#11

投稿記事 by Math » 8年前

あ、”やばい”ですね。う~ん。まあ―そうですね。難しい実例でしょう!
「訂正」

コード:

else
	{
		printf("The file ''indata.dat' was not opened\n");
		exit(-1);
	}

constructor2016810
記事: 22
登録日時: 9年前

Re: データファイルの作成に関わるトラブル

#12

投稿記事 by constructor2016810 » 8年前

ご回答ありうがとうございました。  また、 当方の不注意によりお手数をお掛けしたこと恐縮に存じます。
これからは、投稿に際し、細心の注意を払うようにいたします。

閉鎖

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