Guest User

Untitled

a guest
May 19th, 2016
3,872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<fcntl.h.>
  5. int main( )
  6. {
  7.  int fd1, fd2, fd3;
  8.  int size;
  9.  fd1 = open("hello.txt", O_RDONLY);   // 읽기 전용으로 파일 오픈
  10.  char * a = (char *)malloc(100);          // 100Byte 만큼 메모리 할당
  11.  memset(a, 0, 100);                         // 0으로 초기화
  12.  
  13.  fd2 = open("world.txt", O_RDONLY);   // 읽기 전용으로 파일 오픈
  14.  char * b = (char *)malloc(100);          // wrold.txt파일 크기 + 1 만큼 메모리 할당
  15.  memset(b, 0, 100);                         // 0으로 초기화
  16.  
  17.   read(fd1, a, 6);    // fd1의 파일 크기만큼 파일내용을 a에 저장
  18.   read(fd2, b, 6);    // fd2의 파일 크기만큼 파일내용을 b에 저장
  19.  
  20.   fd3 = open("Add.txt", O_RDWR | O_CREAT | O_APPEND );
  21.   // 읽기/쓰기, 존재하지 않을경우 생성하기, 덧붙이기 옵션사용.
  22.  
  23.    size = strlen(a) + strlen(b);  // a크기 + b크기를 저장
  24.    write(fd3, a, strlen(a));        // Add.txt에 hello라는 내용 덧붙이기
  25.    write(fd3, b, strlen(b));       // Add.txt에 world라는 내용 덧붙이기
  26.    
  27.    char * ab = (char *)malloc(size + 1);    // a크기 + b크기 + 1 만큼 메모리 할당
  28.  
  29.    fd3 = open("Add.txt", O_RDONLY);  
  30.    // 위에서 Add.txt 파일이 존재하지않는경우 생성되며,  설정한 읽기/쓰기는 적용안되므로
  31.  
  32.    read(fd3, ab, size + 1);    // fd3의 파일내용을 size + 1 크기만큼 읽음(저장)
  33.  
  34.    printf("*******  hello.txt & world.txt print!   *******\n");
  35.    printf("%s%s\n,a, b);      // a의내용(hello.txt)과 b의내용(world.txt)을 같이 출력
  36.  
  37.   printf("*******          Add.txt print!         *******\n");
  38.   printf("%s\n", ab);         // ab의 내용을 출력(Add.txt)
  39.  
  40.   close(fd1);      // hello.txt 파일 닫기.
  41.   close(fd2);      // world.txt 파일 닫기.
  42.   close(fd3);      // 생성한 Add.txt 파일 닫기.
  43.  
  44.   free(a);          // a 메모리 반환.
  45.   free(b);          // b 메모리 반환.
  46.   free(ab);         // ab 메모리 반환.
  47.  
  48.   return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment