。。。@naka ~/besten
$ gcc -o bcopy1 bcopy1.c -lpdcursesw
。。。@naka ~/besten
。。。@naka ~/besten
$ bcopy1 dtfile dtfile3
ファイルdtfileがオープンできません。
。。。@naka ~/besten
$
データ"LACKNUM.DAT"をデータ"LACKNUM3.DAT"にコピー
し、表示するプログラムですが、実行するとコンパイルはとおります。しかし上のようなエラーがでてうまくいきません。どの当たりが悪いのかおしえてください
コード
/* bcopy … ファイルのコピー */
// ラックナンバーサーチ・トレーニング(1部です。必要ないところもあります)
#include <stdio.h>
#include <time.h>
#include <float.h>
#include <ctype.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include "getputch.h"
#define MAX_STAGE 3
#define swap(type, x, y) do { type t = x; x = y; y = t; } while (0)
#define MAX_NUM 10
#define BSIZE 44 // この大きさ(44byte)に分割してコピー
char dtfile[] = "LACKNUM.DAT"; // ファイル名
char dtfile3[] = "LACKNUM3.DAT"; // 4, LACKNUM.DATに保存されているデータを記録するのに
// 十分な数の配列"LACKNUM3.DAT" を確保して下さい。
typedef struct {
struct tm local;
double best3;
}time_besten;
//void disp(char* , int );
int main(int argc,char* argv[])
{
int i,n,num;
FILE *fp, *fp3; // *fpと *fp3はファイルポインタ
double best3;
time_besten besten;
unsigned char buf[BSIZE];
if (argc != 3) { fprintf(stderr, "パラメータが不正です。\n"); fprintf(stderr, "bcopy コピー元ファイル名 コピー先ファイル名\n"); } else { if ((fp = fopen(*++argv, "rb")) == NULL) { /* *++argv=const char *filenameも ,"rb"=const char *modeもポインタ */ fprintf(stderr, "ファイル%sがオープンできません。\n", *argv); return (1); } else if ((fp3 =fopen( *++argv, "wb")) == NULL) { fprintf(stderr, "ファイル%sがオープンできません。\n", *argv); fclose(fp); return (1); } else { while ( (n = fread(buf, BSIZE, 1, fp)) > 0){ /* ファイルポインタfpからsizeof(struct tm) バイトのデータを 1 個読み込み、読み込みデータ格納先のポインタbufに格納する */ fwrite(buf,n, 1, fp3); while((i = fread(&besten,sizeof(struct tm),1, fp3)) > 0 ){ printf("%d年 %d月 %d日 %d時 %d分 %d秒\n", besten.local.tm_year + 1900, besten.local.tm_mon + 1, besten.local.tm_mday, besten.local.tm_hour, besten.local.tm_min, besten.local.tm_sec); fread(&best3,sizeof(double),1, fp3); printf("得点(所要時間)は%.1f秒\n\n",besten.best3); } fflush(stdin); getchar(); fclose(fp); fclose(fp3); } } } return (0);
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。