Moim zadaniem jest wczytanie pliku jako argument wywołania, którego zawartość przenosimy do pliku o nazwie plik_mod_2 znak po znaku ignorując znak nowej linii. To pliku plik_mod_2 na początku umieszczamy informację o autorze w pierwszym wierszu. Wszystko to udało mi się zrobić, ale jest jeszcze jeden element zadania, w którym zliczmy wszystkie znaki w pliku źródłowym i pliku stworzonym i zapisujemy wyniki do ostatniego wiersza pliku stworzonego. Niestety to nie działa. Zlicza w pliku źródłowym, ale nie zlicza w pliku wynikowym. I nie wiem czemu to co napisałem nie działa. Poniżej umieszczam ów kod.

if (strcmp(argv[2],"2")==0)
    {  
    char bufor[512];
        FILE *plik1=fopen(argv[1],"r");
        char tekst[]="AUTOR\n";
        char *zmienna = basename(argv[1]);
        char zmienna1[]="Nowy";
        const char help[]="_mod_2";
        strcat(zmienna,help);
        FILE *plik=fopen(zmienna1,"wr");
        int z=rename(zmienna1,zmienna);
        char bufor2[512];
        char bufor3[512];
        fprintf(plik, "%s", tekst);
        char znak;
        int chars=0,chars1=0;
      
    znak = getc( plik1 );
    while (znak != EOF)
{   chars++;
  
    if(znak != '\n')
        putc(znak, plik);
    znak = getc(plik1);
  
   
}
  
    char znak2;
    znak2 = getc( plik);
    while (znak2 != EOF)
{   
    chars1++;
    znak = getc(plik);
}
  
sprintf(bufor2,"\nZnaki w pliku zrodlowym: %d ",chars);
            fputs(bufor2,plik);
sprintf(bufor3," Znaki w pliku wynikowym: %d ",chars1);
            fputs(bufor3,plik);        
  
printf("%d",chars);
printf("%d",chars1);
   
 fclose(plik1);
 fclose(plik);
}