#include <stdio.h>
#include <stdlib.h>
typedef unsigned short word;
typedef struct headerInfo{
int tsize;
int count;
int rsize;
}headinf;
typedef struct dataRec{
long time;
word oppid;
word opppt;
float before;
float after;
int ntrNum;
int tapNum;
int cbNum;
}drec;
int main(){
headinf inf;
drec rec;
FILE *fp;
fp=fopen(\"KJM1.txt\", \"w\");
for(inf.count = 1; inf.count <= 100; inf.count++){
rec.time = inf.count;
rec.oppid = inf.count;
rec.opppt = inf.count;
rec.before = inf.count;
rec.after = inf.count;
rec.ntrNum = inf.count;
rec.tapNum = inf.count;
rec.cbNum = inf.count;
fwrite(&rec, sizeof(drec), 1, fp);
inf.rsize = sizeof(rec);
inf.tsize = inf.count * inf.rsize;
fwrite(&inf, sizeof(headinf), 1, fp);
}
fclose(fp);
system(\"pause\");
return 0;
}
요런 소스를 짰어. rec에 inf.count로 초기화하고 inf.count는 for문 카운트 inf.rsize는 rec에 초기화된 데이터 사이즈
inf.tsize는 rec데이터사이즈와 횟수를 곱해서 총 사이즈를 구해서 inf데이터하고 rec데이터를 파일에 100번 쓰는거거든?
근데 생성된 파일 열어보면 쓰레기 값이 들어가네;;;; 당최 모르겠네... 디버깅을 해봤는데 rec에 inf.count값은 잘들어가드라고
for문도 잘돌아가서 값을 잘 넣어주고 int도 보니 사이즈값도 잘들어가는데.... fwrite부분이 조금 이상한거 같긴한데...
설명좀해줘 횽들 ㅠㅠ
니가 하고 싶은건 fprintf인거 같다.
파일 뭘로 열었어? 구조체를 그대로 파일에 쓰면 구조체 하나에 들어있는 memory 가 그대로 파일에 써진다. 해당 파일을 구조체로 fread 해봐 그럼 잘 보일꺼야
배열에 너가 쓰고 싶은걸 하나하나 넣은담에 그 배열로 fwrite 해봐
그러고 보니 구조체 포인터 동적 할당하라고 하니 그냥 변수로 만들어 썻네?? ... 천잰데?? 거기까진 생각 못함
천회장//fprintf도 구조체단위로 파일에 쓸수있어? 구조체변수별로 각각 써줘야 돼지않나...? 내가 원하는건 구조체 그대로 파일에 쓰는건데.. iljeomobolt// 일단 텍스트로 저장해서 메모장으로 열어본건데... 아! 그럼 그게 쓰레기 값이 아니라 메모리 데이터값이구나. 메모장으로 읽을게 아니라 fread로 읽어야 되는구만! 횽 고마워 ㅎㅎㅎ
ㅇㅇㅇ//배열fwrite는 안해봤는데 한번 해볼께, 구조체 포인터 말하는거보니 어제 질문 본건가?;;; 허접하다보니 포인터 개념이 안잡혀서 그냥 변수로 만들었엉 ㅇㅇ ㅋㅋㅋㅋㅋ
구조체 단위로 쓰고 그걸 fread 다시 읽을 꺼면 너가 지금 한게 맞음 ㅇㅇ
ㅇㅇ... 메모장으로 읽는다고 해서 fprintf 라고 했는데, 말하는거 보니깐 메모장으로 본다는거 자체가 무리수 였음.. fread 화이팅
고마워 횽들. 근데 하나더 궁금한데 위에 rec에 데이터 초기화하는 부분에 변수별로 하나씩 i로 초기화해주니깐 너무 비효율적인거같아서... 한번에 초기화하는 방법 없어?
rec = {inf.count, inf.count, inf.count, inf.count, inf.count, inf.count, inf.count, inf.count}; 이딴건 말도 안되는거 같고 ㅋㅋㅋㅋㅋ
될 지 모르겠는데 memset(&rec, 0, sizeof(rec)) 해봥
memcpy
천회장//그건 그냥 초기화지 않어?위에 보면 알겠지만 inf.count값이 for문으로 계속 ++되고 그값을 반복문내에서 계속 넣어줘야되는건데 이걸 단축해주고싶다는 말이였엉
난독증인가 질문을 자꾸 잘 못 읽음.. ㅠㅠ.. 어쩔 수 없음 일일히 써 주셍;