po raz kolejny zawraca głowę, no ale... podczas wczytywania/wypisywania pomija mi pierwszy znak każdego wiersza. myślałem, że pominę to przez zapisywanie do pliku z jakimś znakiem na początku i to się dotychczas sprawdzało, ale teraz problem wraca...
oto funkcje:
typedef struct test_t{
char *lancuch;
int liczba;
struct test_t* nast;
}test_t;
void wypisz(test_t* glowny)
{
while(glowny != NULL)
{
printf("%d.%s", glowny->liczba, glowny->lancuch);
glowny = glowny->nast;
}
}
test_t* czytaj(FILE* plik, test_t* glowny)
{
test_t *poprzedni, *biezacy;
char znak;
int i=0;
while((znak=getc(plik)) != EOF)
{
biezacy = (test_t*)malloc(sizeof(test_t));
if (biezacy==NULL)
{
perror("malloc");
exit (EXIT_FAILURE);
}
biezacy->lancuch=(char*)malloc(100*sizeof(char));
if (biezacy->lancuch==NULL)
{
perror("malloc");
exit (EXIT_FAILURE);
}
if (glowny == NULL)
glowny = biezacy;
else
poprzedni->nast = biezacy;
biezacy->nast = NULL;
fgets(biezacy->lancuch, 100, plik);
i++;
biezacy->liczba=i;
poprzedni = biezacy;
}
if(glowny != NULL)
biezacy->lancuch=strcat(biezacy->lancuch, "\n");
return glowny;
}
int main(int argc, char** argv)
{
FILE* plik;
test_t* glowny=NULL;
if(plik=fopen(argv[1],"r"))
{
glowny=czytaj(plik, glowny);
wypisz(glowny);
fclose(plik);
}
else
{
printf("Podany plik nie istnieje");
return 1;
}
return 0;
}