File: Stare vježbe/vjezbe12/74b__file_copy.c

  1. /*
  2.   74b__file_copy.c
  3.   Naredbe fgetc, fputc. Ucitavanje parametara sa komandne linije.
  4.   -----
  5.   Program kopira sadrzaj jedne datoteke u drugu. Imena datoteka ocitavaju
  6.   se iz komandne linije.
  7.  
  8.   Parametri komandne linije:
  9.   --- primjer: ako program pokrenemo sa
  10.   file_copy src.txt dest.txt
  11.   onda je
  12.   --> broj_parametara=3
  13.   parametar[0]="file_copy"
  14.   parametar[1]="src.txt"
  15.   parametar[2]="dest.txt"
  16. */
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <string.h>
  21. #include <ctype.h>
  22.  
  23. int main (int broj_parametara, char *parametar[])
  24. {
  25. FILE *source, *destination;
  26. char src_name[80], dest_name[80], ch;
  27.  
  28. if (broj_parametara != 3)
  29. {
  30. printf ("Koristenje: %s polazna_datoteka ciljna_datoteka\n",
  31. parametar[0]);
  32. exit(1);
  33. }
  34.  
  35. strcpy (src_name, parametar[1]);
  36. strcpy (dest_name, parametar[2]);
  37.  
  38. if ((source=fopen(src_name, "rt")) == NULL)
  39. {
  40. printf ("Ne mogu otvoriti datoteku %s za citanje.\n", src_name);
  41. exit(1);
  42. }
  43.  
  44. if ((destination=fopen(dest_name, "rt")) != NULL)
  45. {
  46. printf ("Datoteka %s postoji. Prebrisati (y/n)? ", dest_name);
  47.  
  48. if (toupper(getchar()) != 'Y')
  49. exit(1);
  50. }
  51.  
  52. if ((destination=fopen(dest_name, "wt")) == NULL)
  53. {
  54. printf ("Ne mogu otvoriti datoteku %s za pisanje.\n", dest_name);
  55. exit(1);
  56. }
  57.  
  58. while ((ch=fgetc (source)) != EOF)
  59. fputc (ch, destination);
  60.  
  61. /* Ekvivalentni zapis ove petlje: */
  62. /*
  63. while (!feof(source)) {
  64. ch = fgetc (source);
  65.   fputc (ch, destination);
  66. }
  67. */
  68.  
  69. fclose (source);
  70. fclose (destination);
  71.  
  72. return 0;
  73. }
  74.