파일 입출력 코드 설명 부탁드립니다. (fread, fwrite)
조회수 777회
파일 입출력을 처음 공부중입니다만,
리눅스에서 쓸때에는 실행명령어에 파일 이름도 추가해야 하더라고요
그래서 main의 argv, argc를 활용하는건 알겠는데
이 코드가 순차적으로 어떤일을 하는지 이해가 잘 안갑니다
이해가 가면 활용을 할 수 있을 것 같은데
도와주신다면 감사하겠습니다.
예제의 student.h는 아마도 구조체가 선언되어있는곳 같습니다.
fread 예제
#include <stdio.h>
#include "student.h"
int main(int argc, char **argv)
{
struct student record;
FILE *fp;
if (argc !=2)
{
fprintf(stderr,"Usage: %s filename\n", argv[0]);
return 1;
}
if ( (fp = fopen(argv[1], "rb")) == NULL)
{
fprintf(stderr, "Error: Cannot open the file %s\n", argv[1]);
return 2;
}
printf("-------------------------------------\n");
printf("%s\t %7s\t %6s\n", "Sno", "Sname", "Sgrade");
printf("-------------------------------------\n");
while (fread(&record, sizeof(record), 1, fp) > 0)
{
if (record.id !=0)
printf("%d\t %s\t %lf\n", record.id, record.name, record.score);
}
printf("\n");
printf("-------------------------------------\n");
return 0;
}
fwrite 예제
#include <stdio.h>
#include <stdlib.h>
#include "student.h"
int main(int argc, char **argv)
{
struct student record;
FILE *fp;
if (argc !=2) {
fprintf(stderr,"Usage: %s filename\n", argv[0]);
exit(EXIT_FAILURE);
}
fp = fopen(argv[1], "wb");
printf("%s %7s %6s\n", "Sno", "Sname", "Sgrade");
while (scanf("%d %s %lf", &record.id, record.name, &record.score) == 3) {
fwrite(&record, sizeof(record), 1, fp);
}
fclose(fp);
return 0;
}
댓글 입력