problem tu jest taki, ze zamieniasz znaki konca lini w buforze ale tracisz wszystko bo zachowujesz w tym samym buforze nowa linie nie zapisujac wczesniej jej do nowego pliku
Podobny problem byl w poprzednich kodach.
Oto zmieniony kod mysle, ze bedzie dobrze dzialal
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char tab[13]={0}; *tu nie trzeba wpisywac wszystkich zer bo kompilator automatycznie to robi
*nie wiem dlaczego akurat 10 znakow powinna miec nazwa pliku??
*mysle ze powinna byc 8+kropka+3=12 + to ze to jest string (na koncu jest jeszcze '\0', wiec tablica powinna miec 13
*gorzej jezeli ktos wpisuje cala sciezke dostepu :)
char buff[1024+1]={0}; *zerujemy zeby nie wypisywalo smieci !!!!!
* +1 na koncowe 0 dla prawidlowego obliczenia dlugosci stringu w funkcji fwrite
char *pos=NULL; *pozycja powinna byla byc wskaznikiem do znakow
FILE *in, *out;
clrscr();
printf("\nProgram otworzy plik o nazwie, ktora wpiszesz\ni zapisze cala jego zawartosc do pliku o nazwie, jaka podasz.\nLiczba znakow, z jakiej musi sie skladac plik zrodlowy i wynikowy to 10.");
printf("\n\n\n\nNazwa pliku: ");
scanf("%s",&tab);
if ((in=fopen(tab,"r"))==NULL) *tu mozna to troszke skrocic, ale to szczegoly
{
printf("\nNie mozna otwozyc pliku %s",tab);
return 1;
}
printf("\nWpisz nowa nazwe pliku: ");
scanf("%s",&tab);
out=fopen(tab, "w");
if (out==NULL)
{
printf("\nNie mozna zamknac pliku: %s",tab); *nie rozumiem tego komunikatu, przciez nic nie zamykasz :)
return 1;
}
/* while( fgets(buff,1024,in)) *nie wiem co tu robilo file_handle ?????
{
while( pos = strchr( buff, '\n' ) )
{
buff[pos] = ' ';
}
} */
*fgets tez nie jest najlepszym rozwiazaniem bo pobiera cala linijke lub jezeli jest za dluzsza niz (u ciebie 1024) to te 1024 znaki
*proponuje zastosowac fread i fwrite
while (fread(buff,sizeof(char),1024,in)) *czytanie co najwyzej 1024 znakow z pliki in
{
while(pos=strchr(buff,'\n'))
*pos=' '; *w miejscu znalezienia znaku konca linii wpisujemy ' '
fwrite(buff,sizeof(char),strlen(buff),out); *wczytanie danego bufora do pliku o dlugosci bufora (strlen(buff))
strset(buff,0); *zerowanie bufora
}
/* while (!feof(in))
fputc(fgetc(in), out); */ //to tu jest na moj gust troche bez sensu, bo kopiuje stary plik do nowego
fclose(in);
fclose(out);
printf("\n\n\nStworzono plik: %s",tab);
return 0;
}
--Eryk