Problem jest w tym programie. Program ma za zadanie skopiować co 3ci znak z jednego pliku i wstawić go do drugiego. Jest to jeden z listingów w książce Język C szkoła programowania, z tym, że ma modyfikacje. Po uruchomieniu programu nie dostaję żadnych informacji od programu. Program uruchamiany na Ubuntu 14.04
/*
* rozdzial13L2.c
*
* Created on: 30-03-2014
* Author: dawid
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARG_ERR "Użycie: %s nazwa_pliku\n"
#define FOPEN_ERR "Nie można otworzyć pliku: %s\n"
#define FCLOSE_ERR "Nie można zamknąć plików\n"
int arg_lengh(char arg[]); //sprawdza długość tablicy
int main(int argc, char *argv[])
{
FILE * file_src, *file_destin;
int ch;
char nazwa[arg_lengh(argv[1]) + 4]; // rezerwuje miejsce o 4 większe, aby do nazwy pliku końcowego dodać .red
int licznik = 0;
int nazwa_lengh = arg_lengh(argv[1]);
//sprawdza poprawne wywołanie programu
if (argc != 2)
{
fprintf(stderr,ARG_ERR, argv[0]);
exit(1);
}
//sprawdza błędy otworzenia pliku źródłowego
if ((file_src = fopen(argv[1], "r")) == NULL)
{
fprintf(stderr, FOPEN_ERR, argv[1]);
exit(2);
}
//Ustawia nazwę pliku wyjściowego
strcpy(nazwa,argv[1]);
if (nazwa[nazwa_lengh] == '.')
strcat(nazwa, "red");
else
strcat(nazwa, ".red");
//sprawdza błędy otworzenia nowego pliku
if ((file_destin = fopen(nazwa, "w"))== NULL)
{
fprintf(stderr,FOPEN_ERR,nazwa);
exit(3);
}
//Kopiuje do pliku docelowego co trzeci znak
while ((ch = getc(file_src)) != EOF)
{
if (licznik % 3 == 0)
putc(ch,file_destin);
}
// Sprawdza poprawne zamknięcie plików
if ((fclose(file_src) != 0) || (fclose(file_destin) != 0))
{
fprintf(stderr,FCLOSE_ERR);
exit(3);
}
return EXIT_SUCCESS;
}
int arg_lengh(char arg[])
{
int lengh = 0;
//sprawdza długość nazwy do końca łańcucha lub napotkania kropki
while(arg[lengh] != '\0' || arg[lengh] != '.')
lengh++;
return lengh;
}
Próbowałem w kodzie w różnych miejscach wstawiać printf("1"), żeby zobaczyć przynajmniej do którego miejsca program dochodzi ale nic nie zostało wyświetlone niestety. printf wstawiałem zarówno w różnych miejscach funkcji main jak i w funkcji arg_lengh. Z góry dziękuję za poświęcony czas i odpowiem (jeśli będę potrafił) na zadane pytania