Advertisement
Guest User

Untitled

a guest
May 29th, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #define MAX 512
  4.  
  5. int main(int argc, char* argv[]) {
  6. char buf[MAX];
  7. int desc_zrod, desc_cel;
  8. int lbajt;
  9.  
  10. // Tablica argv[] przechowuje łańcuchy znaków podane
  11. // podczas wywoływania programu. argv[0] przechowuje
  12. // nazwę pliku za pomocą którego został wywołany program;
  13. // argv[1..argc] przechowują ewenetualne parametry
  14. if (argc<3) { // użyj standardowego wyjścia komunikatów błędów
  15. fprintf(stderr, "Za malo argumentow. Uzyj:\n");
  16. fprintf(stderr, "%s <pliki zrodlowe> ... <plik docelowy>\n", argv[0]);
  17. return 0;
  18.  
  19. // utworz plik o nazwie podanej jako ostatni argument
  20. desc_cel = creat(argv[argc], 0640);
  21. if (desc_cel == -1){
  22. perror("Blad utworzenia pliku docelowego");
  23. return 0;
  24. }
  25.  
  26. // otwórz plik do odczytu
  27. int i;
  28. for (i = 2;i<argc;i++) {
  29. // po kolei otwiera pliki które nie są ostatnimi albo
  30. // pierwszymi argumentami i zapisuje je do utworzonego pliku
  31. desc_zrod = open(argv[i], O_RDONLY);
  32. if (desc_zrod == -1) { // plik nie został otwarty
  33. // perror() powoduje wyświetlenie wiadomości na standardowym wyjściu błędów
  34. perror("Blad otwarcia pliku");
  35. return 0;
  36. }
  37.  
  38. // Kopiowanie.
  39. while((lbajt = read(desc_zrod, buf, MAX)) > 0) {
  40. if (write(desc_cel, buf, lbajt) == -1){
  41. perror("Blad zapisu pliku docelowego");
  42. return 0;
  43. }
  44. }
  45. if (lbajt == -1) {
  46. perror("Blad odczytu pliku zrodlowego");
  47. return 0;
  48. }
  49. }
  50. return 0;
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement