Usuwanie z pliku znaku jezeli jest taki sam jak poprzedni.

0

Witam ponownie;)
Próbuje napisać prosty program który rozpozna czy w pliku znak jest taki sam jak poprzedni, jak tak to go usunie i zapisze wynik do nowego programu. Przykładowe rozwiązanie "22uuut2011 " na "2ut201".
Przy okazji dzięki za pomoc przy ostatnich dwóch moich programikach:)

To mój program który jak zwykle nie działa:D

 #include<stdio.h>
#include<stdlib.h>
int main(void)
{
    FILE *f,*f1;;
    char zn[100];
    int i=0;
    if((f=fopen("plik.c","r"))==NULL)
    {
                                       printf("Nie otwarto pliku do odczytu\n");
                                       return 1;
    }
    if((f1=fopen("kopia.txt","w"))==NULL)
    {
                                         printf("Nie otwarto pliku do zapisu\n");
                                         return 1;
    }
    while((zn[i]=getc(f))!=EOF)
    {
                             if((zn[i+1])!=zn[i])
                             fprintf(f1,"%c",zn[i]);
                             i++;
    }
    fclose(f);
    fclose(f1);
    system ("pause");
    return 0;
}

Wcześniej próbowałem bez tablicy ale też nie działało, ta wersja wydaje mi się bardziej sensowna. Pozdro

0

zn[i+1]
porównujesz z następnym znakiem którego jeszcze nie wczytałeś

1
Dawid123 napisał(a)
    while((zn[i]=getc(f))!=EOF)
                             if((zn[i+1])!=zn[i])

Te znaki to z przyszłości bierzesz?

int obecny, poprzedni = EOF;
// ...
while ((obecny = getc(fi)) != EOF) {
    if (obecny != poprzedni) {
        putc(obecny, fo);
        poprzedni = obecny;
    }
};

Myśleć trzeba, potem klepać.

0

Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1