配列に値を代入すると0が代入されてしまう

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mal

配列に値を代入すると0が代入されてしまう

#1

投稿記事 by mal » 4年前

お世話になっております。

現在大学の授業でプログラムを作成しているのですが、タイトルの通り配列に値をいれても0が代入されます。

コード:

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

#define ROW 4492
#define COL 4
#define MAX_NUM 4726
#define NOE 4726
#define XY 2

int main()
{
	FILE *fpr,*fpw;
	
	
	int rop[ROW][COL];
	double coord[NOE][XY];
	int i,j;
	double f,g;
	char h;
	j=0;

	char *fnamec="coord.txt";
	
	fpr=fopen(fnamec,"r");
	
	
	if(fpr==NULL)
	{
		printf("couldnt open coord.txt\n");
		return -1;
	}
	
	i=0;
	
	while(fscanf(fpr,"%lf %lf %c",&f,&g,&h) != EOF)
	{
		coord[i][0]=f;
		coord[i][1]=g;
		i++;
	}
	
	
	printf("%f %f\n",coord[0][1]);
	
	fclose(fpr);
	
	return 0;
}
coord.txtというファイルには座標データが入っており、
1.00 2.00 i
2.00 5.00 i
(以下略)
という具合になっています。左からx座標、y座標で、右のiは特に気にしなくていいものです。

このプログラムを実行すると、2次元配列のcoord[][0]、つまりx座標のデータは正常に格納されるのですが、coord[][1]、y
座標のところにはすべて0が代入されてしまいます。

こんなことは初めてで戸惑っているのですが、どなたか原因等分かる方いらっしゃいませんか?

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

Re: 配列に値を代入すると0が代入されてしまう

#2

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

mal さんが書きました:このプログラムを実行すると、2次元配列のcoord[][0]、つまりx座標のデータは正常に格納されるのですが、coord[][1]、y
座標のところにはすべて0が代入されてしまいます。
本当ですか?デバッガなどで本当に0が代入されているか確認しましたか?
まあ、44行目の書式に対してデータが足りないprintfの呼び出しはundefined behaviorなので、ありえない現象ではないですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

mal

Re: 配列に値を代入すると0が代入されてしまう

#3

投稿記事 by mal » 4年前

はい、printfで確認しました。
x座標はデータ通りに出力されたのですが、y座標は0でした。
どうしたらいいでしょうか?

box
記事: 1751
登録日時: 9年前

Re: 配列に値を代入すると0が代入されてしまう

#4

投稿記事 by box » 4年前

では、確認したときのコードを載せてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
へにっくす
記事: 630
登録日時: 8年前
住所: 東京都

Re: 配列に値を代入すると0が代入されてしまう

#5

投稿記事 by へにっくす » 4年前

mal さんが書きました:はい、printfで確認しました。
x座標はデータ通りに出力されたのですが、y座標は0でした。
どうしたらいいでしょうか?
No.2のみけCATさんの指摘を見てないのですか。
%fを2つ指定してるのに、対応する引数は一つしかないですよね?
written by へにっくす

閉鎖

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