1. 작업 환경
- Oracle VM VirtualBox
- ubuntu 22.04
- PuTTY
- 언어 : C
2. 파일 복수 유틸리티 구현
- 필요한 함수를 사용하기 위한 헤더함수 include
- main 함수 정의
- argc는 명령줄 인자의 개수
- argv는 명령줄 인자들을 가리키는 문자열 배열
- n, in, out 변수 정의
- in 변수는 첫번째 인자의 open 값을 저장
- out 변수는 두번째 인자의 open 값을 저장
- n 변수는 in 변수에서 읽은 값을 저장
- buf 문자형 변수 정의 : 없어도 상관없으나, 성능이 떨어지기 때문에 buf 문자형 변수를 정의해주는 것이 좋음
- 1번째 if 조건 정의 : 필요한 인자 개수 정의 및 에러 설정
- 에러 설정할때는 < 0 을 권장, 에러가 -1 이나 -2 일 수도 있기 때문
- 출력을 구현할때는 write() 함수를 사용하는 것 보다는 printf() 함수를 사용하는 것이 더 좋음
- 2번째 if 조건 정의 : 첫번째 파일의 open 정의 및 에러 설정
- 3번째 if 조건 정의 : 두번째 파일의 open 정의 및 에러 설정
- 첫번째 파일에 데이터가 있다면 데이터를 읽은 후 n 변수에 저장하여 n을 두번째 파일에 씀
- 필요한 기능이 모두 작성됐으면 close 로 파일을 닫아 줌
3. 실습하면서 궁금했던 점
- 꼭 while 문으로 써야하는 것인가? : 파일이 buf 에서 정의된 데이터 크기 보다 클 경우 파일 전체를 한번에 읽을 수가
없음. 따라서 while 문이 필요함
- n 변수는 왜 close 하지 않을까? : n 은 파일 디스크립터가 아닌, 바이트 수를 나타내기 때문에 close 할 필요가 없음
4. 느낀점
- 아래 코드는 반복적으로 연습해서 외운 후 작성할 수 있는 능력을 갖춘다면 다양한 코드를 구조화해서 이해하고 응용
하는데 도움이 될 것 같다.
- if문 조건을 설정할때는 매개변수가 입력되는 부분부터 정의하고, 조건 마다 에러 조건을 설정하고 에러 조건은 "< 0"
을 사용하는 것이 좋을 것 같다.
'C언어' 카테고리의 다른 글
파일 전송 서버/클라이언트 만들기 실습 (2) | 2024.10.11 |
---|---|
TCP/IP 소켓 프로그래밍 (0) | 2024.10.10 |
C언어 연산자 (0) | 2024.10.08 |
C언어 문자열 저장 (2) (1) | 2024.10.08 |
C언어 문자열 저장 (포인터, 배열 포함) (0) | 2024.10.08 |