OS : Linux 우분투 버전 18.04
컴파일러 : gcc 7.5
[명세]
이미 존재하는 원본파일로부터 10바이트 단위로 데이터를 읽어 새로운 복사본파일에 저장한다. 마지막으로 복사할 데이터가 10바이트가 되지 않는 경우 그 크기의 데이터를 읽어 복사본파일에 저장한다. 명령어를 수행시킬 때 복사본파일은 존재하지 않으며 따라서 새로 생성해야 하며, 명령어를 실행한 후 복사본파일의 내용은 항상 원본파일의 것과 동일해야 한다.
a.out <원본파일명> <복사본파일명>
[소스 코드] - copy.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]) {
FILE *fp = fopen(argv[1], "r"); //원본 파일 읽기 전용으로 열기
if (fp == NULL) { // 파일이 비어있는 경우 fp는 NULL을 리턴
printf("원본 파일이 비어있습니다.");
return 0;
} // 원본 파일이 비어있는 경우
FILE *nfp = fopen(argv[2],"w"); // 복사본 파일 만들기
char *buffer = (char *)malloc(sizeof(char *)*10);
while ( !(feof(fp))) { // feof는 파일 포인터가 파일의 끝인지 검사
memset(buffer,0,sizeof(buffer));
fread(buffer,sizeof(char),10,fp); // 10바이트씩 읽기
fwrite(buffer,sizeof(char), strlen(buffer),nfp); // 널문자 이후로는 쓰레기값 안출력하게 strlen쓰기
}
fclose(fp);
fclose(nfp);
return 0;
}
'파일처리' 카테고리의 다른 글
[C언어_파일처리] 오프셋과 바이트 수를 이용해 파일에 있는 값 삭제하기 (delete) (0) | 2022.04.04 |
---|---|
[C언어_파일처리] 파일에서 오프셋을 기준으로 데이터 끼워넣기 (insert) (0) | 2022.04.04 |
[C언어_파일처리] 파일에 데이터 덮어쓰기 (overwrite) (0) | 2022.04.04 |
[C언어-파일처리] 두 개의 파일 병합하기 (merge) (0) | 2022.04.04 |
[C언어_파일처리] 오프셋, 바이트 수를 기준으로 파일 읽기 (read) (0) | 2022.04.04 |