Hirdetés

Új hozzászólás Aktív témák

  • bucsupeti
    senior tag

    Lefut, "működik" is, de érdekelnének az esetleges hibák. A kérdés pedig az lenne, hogy tudom az int-et is helyesen kiíratni a txt-be?

    typedef struct {
    int hd;
    char domain[30];
    }
    vmi;

    int main(int argc, char** argv) {

    char domain[30];
    char tulaj[30];
    int hd;
    FILE * fp;
    fp=fopen("vmi.txt","r");

    do {
    printf("Add meg a tulajdonos nevet!\n)"); scanf("%s",domain);
    printf("Add meg az elofizeto havidijat!\n"); scanf("%d",&hd);

    } while (domain[0]!='e' || domain[1]!='n' || domain[2]!='n' || domain[3]!='y' || domain[4]!='i');

    if (fp!=NULL) {

    fwrite(domain,sizeof(domain),1,fp); printf("Az adatokat kiirtuk\n");
    }
    else {
    printf("Sikertelen\n");
    }
    fclose(fp);

    A while feltétel így elég "bonyolultan" néz ki. Nem látszik belőle hogy gyakorlatilag te az "ennyi" szó beírásakor hagynád abba a ciklust (holott a feladatban a "stop" volt megadva ;] )
    Inkább csinálj egy függvényt rá, vagy használd a string.h-ban lévő strcmp() függvényt. Sokkal kellemesebb lesz a kódod.
    pl:
    do {
    printf("Add meg a tulajdonos nevet!\n)"); scanf("%s",domain);
    printf("Add meg az elofizeto havidijat!\n"); scanf("%d",&hd);
    } while (strcmp(domain,"ennyi"));

    Gyakorlatilag bekéregeted az adatokat és nem csinálsz velük semmit. Kivéve azzal az adattal aminél a domain nevű stringbe azt írod hogy "ennyi"
    Pl ha azt írod be hogy "alma" akkor nem történik semmi újból fut a ciklus.Ezután beírod hogy "ennyi" akkor a ciklus befejeződik. Ezek után szándékod szerint ezt kiíratod egy vmi.txt nevű fájlba.
    Sok értelme ennek nincs, mert a többi adat nincs elmentve.
    A fájlba írást a ciklusmagban kell elvégezned, vagy tömbbe (láncolt listába) kell az adatokat bekérni, majd a bekérő ciklus után az egészet kiírni egyben.

    A progi elején a vmi nevű struktúra az mi akar lenni? Nem használod sehol.

Új hozzászólás Aktív témák