無題

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

無題

#1

投稿記事 by www » 18年前

どこがおかしいか教えてください(;_;)

#include <stdio.h>

void main()
{
typedef struct kokyaku_data
{
int k_code; // 顧客コード
short h_nen,h_tsuki,h_hi; // 発行年月日
short k_nen,k_tsuki,k_hi; // 使用期限
}KOKYAKU;

KOKYAKU kokyaku;

printf("顧客コードを入力してください\n");
scanf("%d",&kokyaku.k_code);

// 顧客構造体へ日付をセットする
printf("今年の西暦入力してください(YYYY MM DD):");
scanf("%d %d %d",&kokyaku.h_nen,&kokyaku.h_tsuki,&kokyaku.k_hi);

if(kokyaku.h_tsuki == 4 || kokyaku.h_tsuki ==6 || kokyaku.h_tsuki == 9 || kokyaku.h_tsuki == 11){
kokyaku.k_hi=30;
kokyaku.h_tsuki=1;
}
kokyaku.k_tsuki=kokyaku.h_tsuki;
}else
if((kokyaku.h_tsuki==3) && (kokyaku.h_hi==1)){
if((kokyaku.k_nen) % 400 ==0 || (kokyaku.k_nen)%4==0 && (kokyaku.k_nen)%100!=0){
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=29;
}else{
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=28;
}
}else{
kokyaku.k_hi=30;
if(kokyaku.h_tsuki = 1){
kokyaku.k_tsuki=12;
}
}
printf("%d %d %d",kokyaku.k_nen,kokyaku.k_tsuki,kokyaku.h_hi);

}

FILE *ds;

ds=fopen("../datafile/d_stock","w");

バグ

Re:無題

#2

投稿記事 by バグ » 18年前

メイン関数の外にあるファイルポインタは、何の為にあるのでしょうか?

それから、{}の数が一致していません。

バグ

Re:無題

#3

投稿記事 by バグ » 18年前

#include <stdio.h>

// 年月日格納用構造体
typedef struct tag_YMD
{
	short	Year;
	short	Month;
	short	Day;
} YMD;

// 顧客管理用構造体
typedef struct tag_KOKYAKU
{
	int Code;		// 顧客コード
	YMD	Public;		// 発行日
	YMD	Limit;		// 使用期限
} KOKYAKU;

// メイン関数
void main()
{
	KOKYAKU Kokyaku;

	// 顧客コードの入力
	printf("顧客コードを入力してください"); 
	scanf("%d",&Kokyaku.Code); 

	// 発行年月日の入力
	printf("今年の西暦入力してください(YYYY MM DD):");
	scanf("%d %d %d",&Kokyaku.Public.Year, &Kokyaku.Public.Month, &Kokyaku.Public.Day);

	// 使用期限年の計算
	Kokyaku.Limit.Year = Kokyaku.Public.Year + 1;

	// 発行日が1日だった場合の処理
	if (Kokyaku.Public.Day == 1)
	{
		// 末日の計算
		if (Kokyaku.Public.Month == 5 || Kokyaku.Public.Month == 7 || Kokyaku.Public.Month == 10 || Kokyaku.Public.Month == 12)
		{
			// 入力された月が、5、7、10、12月だった場合、1ヶ月前の末日は30日となる
			Kokyaku.Limit.Day = 30;
		}
		else if (Kokyaku.Public.Month == 3)
		{
			// 入力された月が3月だった場合は、前月が2月なので閏年の計算を行う
			if ((Kokyaku.Limit.Year % 400 == 0 || Kokyaku.Limit.Year % 4 == 0) && Kokyaku.Limit.Year % 100 != 0)
			{
				Kokyaku.Limit.Day = 29;
			}
			else
			{
				Kokyaku.Limit.Day = 28;
			}
		}
		else
		{
			Kokyaku.Limit.Day = 31;
		}

		// 使用期限月の計算
		if (Kokyaku.Public.Month == 1)
		{
			// 1月だった場合の処理
			Kokyaku.Limit.Year--;
			Kokyaku.Limit.Month = 12;
		}
		else
		{
			Kokyaku.Limit.Month = Kokyaku.Public.Month - 1;
		}
	}
	else
	{
		Kokyaku.Limit.Month = Kokyaku.Public.Month;
		Kokyaku.Limit.Day = Kokyaku.Public.Day - 1;
	}

	printf("使用期限 : %04d年 %02d月 %02d日\n", Kokyaku.Limit.Year, Kokyaku.Limit.Month, Kokyaku.Limit.Day);
}

バグ

Re:無題

#4

投稿記事 by バグ » 18年前

上記のプログラムですが、入力時の不正値チェックなどは何もしていません。
保存もしていませんので、必要であれば付け足してください。

sa

無題

#5

投稿記事 by sa » 18年前

ありがとうございます。このファイルのデータのみを違うファイルに保存するには、どのように書けばよいのでしょうか??

バグ

Re:無題

#6

投稿記事 by バグ » 18年前

保存にはfprintf関数を、読み込みにはfscanf関数を使用すれば楽だと思いますよ。

sa

無題

#7

投稿記事 by sa » 18年前

開いているファイルと違うファイルに書き込むころができますか??

box

Re:無題

#8

投稿記事 by box » 18年前

その、書き込みを行いたいファイルについて、
 ・オープン処理
 ・書き込み処理
 ・クローズ処理
のコードを書いてください。

閉鎖

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