ライブラリで構造体に登録したデータがフフフフフになる。
-
新人
ライブラリで構造体に登録したデータがフフフフフになる。
ライブラリで構造体に登録したデータをメインプログラムでprintf(salsdata[0].car_code);するとフフフフフ....... 文字化け になる。どなたか原因が分かる方ご教授お願いします。
ライブラリ
int Set_Struct_SalsData(void) {
char str[CSV_RECODE_SIZE_MAX];
FILE *fp;
SALSDATA salsdata[1024];
int DataCount = 0;
fp = fopen("sale0904.csv","r");
while(fgets(str, CSV_RECODE_SIZE_MAX, fp)){
sscanf(str, "%[^,],%[^,],%[^,],%x,%s",
salsdata[DataCount].branche_code,
salsdata[DataCount].customer_name,
salsdata[DataCount].car_code,
&salsdata[DataCount].option,
salsdata[DataCount].date);
DataCount++;
}
fclose(fp);
return 0;
}
ライブラリ
int Set_Struct_SalsData(void) {
char str[CSV_RECODE_SIZE_MAX];
FILE *fp;
SALSDATA salsdata[1024];
int DataCount = 0;
fp = fopen("sale0904.csv","r");
while(fgets(str, CSV_RECODE_SIZE_MAX, fp)){
sscanf(str, "%[^,],%[^,],%[^,],%x,%s",
salsdata[DataCount].branche_code,
salsdata[DataCount].customer_name,
salsdata[DataCount].car_code,
&salsdata[DataCount].option,
salsdata[DataCount].date);
DataCount++;
}
fclose(fp);
return 0;
}
Re: ライブラリで構造体に登録したデータがフフフフフになる。
どうせソースコードを提示するなら、回答しようとする側で
状況が再現できるよう、main関数などを含めた
ビルドできるコード全体を提示してくださると助かります。
状況が再現できるよう、main関数などを含めた
ビルドできるコード全体を提示してくださると助かります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
-
新人
Re: ライブラリで構造体に登録したデータがフフフフフになる。
すみませんでした。メインプログラムです。
よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "csv_lib.h"
#include "csv_struct.h"
int Set_Struct_SalsData(void);
int main(void){
SALSDATA salsdata[1024];
Set_Struct_SalsData();
printf(salsdata[0].car_code);
return 0;
}
よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "csv_lib.h"
#include "csv_struct.h"
int Set_Struct_SalsData(void);
int main(void){
SALSDATA salsdata[1024];
Set_Struct_SalsData();
printf(salsdata[0].car_code);
return 0;
}
Re: ライブラリで構造体に登録したデータがフフフフフになる。
nonさんの回答がビンゴです。
main関数のsalsdata[]とSet_Struct_SalsData関数のsalsdata[]は、
ともにその関数の中でだけ有効な変数です。
両者の間には何の関連もありません。たとえ名前が同じであるとしても。
両者を結びつけたければ、Set_Struct_SalsData関数の引数として
salsdata[]を渡すか、あるいは、salsdata[]をグローバル変数とする必要があります。
前者を推奨します。
ところで、
この書き方は正しいでしょうか。書式文字列は本当に不要ですか?
main関数のsalsdata[]とSet_Struct_SalsData関数のsalsdata[]は、
ともにその関数の中でだけ有効な変数です。
両者の間には何の関連もありません。たとえ名前が同じであるとしても。
両者を結びつけたければ、Set_Struct_SalsData関数の引数として
salsdata[]を渡すか、あるいは、salsdata[]をグローバル変数とする必要があります。
前者を推奨します。
ところで、
この書き方は正しいでしょうか。書式文字列は本当に不要ですか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
-
新人
Re: ライブラリで構造体に登録したデータがフフフフフになる。
boxさん、nonさん ありがとうございます。正しく表示されました。
salsdata[]をグローバル変数とする方はわかったのですがSet_Struct_SalsData関数の引数としてsalsdata[]を渡す方法というのがわかりません。どう書けばよろしいのでしょうか?
salsdata[]をグローバル変数とする方はわかったのですがSet_Struct_SalsData関数の引数としてsalsdata[]を渡す方法というのがわかりません。どう書けばよろしいのでしょうか?
Re: ライブラリで構造体に登録したデータがフフフフフになる。
C言語に関する参考書を読んだりWebサイトを閲覧したりすれば、新人 さんが書きました: Set_Struct_SalsData関数の引数としてsalsdata[]を渡す方法というのがわかりません。どう書けばよろしいのでしょうか?
配列を関数の引数とする方法が必ず載っているはずです。
研究してみてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ライブラリで構造体に登録したデータがフフフフフになる。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ライブラリで構造体に登録したデータがフフフフフになる。
nonさん
新人と同じ者です。PSYCOでユーザ登録させていただきました。
混乱させてしまい申し訳ありません。
新人と同じ者です。PSYCOでユーザ登録させていただきました。
混乱させてしまい申し訳ありません。