Keresés

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

  • Coconut's

    csendes tag

    válasz Chipi333 #3127 üzenetére

    Köszönöm szépen a segítséget, és Jester01-nek is, de sajnos nem jöttem rá még, hogy miért rakja egy sorba a dolgokat az átmeneti fájlban. Valahogy ez a törlés nem fekszik nekem, itt a jelenlegi kódom, az észrevételeket szívesen fogadom továbbra is, és köszi előre is:)

    void torol(MUSIC zene, FILE *f)
    {
    fflush(stdin);

    char celpont1, celpont2, celpont3, celpont4;
    char s[10]="";

    printf("A torles funkciot hasznalod, a kovetkezokben add meg, pontosan melyik zenet szeretned torolni!\n");
    system("pause");
    printf("Add meg, melyik eloado zenejet szeretned torolni!");
    fgets(&celpont1,MAX_STR,stdin);
    printf("Add meg, melyik szerzo zenejet szeretned torolni!");
    fgets(&celpont2,MAX_STR,stdin);
    printf("Add meg, milyen hosszusagu zenet szeretnel torolni!");
    fgets(s,99,stdin);
    celpont3=atoi(s);
    printf("Add meg, melyik mufaju zenet szeretned torolni!");
    fgets(&celpont4,MAX_STR,stdin);

    FILE *tmp = fopen("tmp.txt", "wb");

    /*// Másolás az átmeneti fájlba
    char tmp2;

    while(!feof(f))
    {
    tmp2 = getc(f);
    if(strcmp(tmp2, celpont1) != 0 || strcmp(tmp2, celpont2) != 0 || strcmp(tmp2, celpont3) != 0 || strcmp(tmp2, celpont4) != 0)
    {
    fprintf(tmp, " ");
    }
    else{
    putc(tmp2, tmp);
    };
    }
    // Visszamásolás
    while(!feof(tmp))
    {
    tmp2 = getc(tmp);
    putc(tmp2, f);
    }; */


    fclose(tmp);
    }

  • Coconut's

    csendes tag

    Sziasztok!
    Lenne egy kis problémám, C kóddal szeretnék törölni egy .txt fájlból sorokat, amiket a programban kérek be, változókba. Az első hiba, hogy amikor átmeneti fájlba másolok, egymás után rakja a sorokat, nem új sorba, tehát 1 sorban lesz az egész, +hát ugye a törlés sem működik, itt a kód, amire jutottam eddig, köszönöm szépen a segítségeket előre is!

    void torol(MUSIC zene, FILE *f)
    {
    fflush(stdin);

    char celpont1, celpont2, celpont3, celpont4;
    char s[10]="";

    printf("Add meg, melyik eloado zenejet szeretned torolni!");
    fgets(&celpont1,MAX_STR,stdin);
    printf("Add meg, melyik szerzo zenejet szeretned torolni!");
    fgets(&celpont2,MAX_STR,stdin);
    printf("Add meg, milyen hosszusagu zenet szeretnel torolni!");
    fgets(s,99,stdin);
    celpont3=atoi(s);
    printf("Add meg, melyik mufaju zenet szeretned torolni!");
    fgets(&celpont4,MAX_STR,stdin);

    FILE *tmp = fopen("tmp.txt", "wb");

    // Másolás az átmeneti fájlba
    char tmp2[TMP];

    do
    {
    tmp2[TMP] = getc(f);
    if(tmp2 == &celpont1 || tmp2 == &celpont2 || tmp2 == &celpont3 || tmp2 == &celpont4)
    {
    fprintf(tmp, " ");
    }
    putc(tmp2[TMP], tmp);
    }while(!feof(f));
    // Visszamásolás
    do
    {
    tmp2[TMP] = getc(tmp);
    putc(tmp2[TMP], f);

    }while(!feof(tmp));

    fclose(tmp);
    }

    Ui.: Az f file-t miután visszatér az eljárásból, ott zárom be(a main()-ben), az f-ben vannak a sorok beolvasva így:
    adat1 // char típusú(előadója)
    adat2 // char típusú(szerzője)
    adat3 // int típusú(hossza)
    adat4 // char típusú(műfaja)

    Ez egy zeneszámos progi, 4 adat vonatkozik 1 zenére, de ez végülis nem számít, mert a sorokat egyenként is tudom törölni, mert 4 külön változóba kérem be a sorok tartalmát. Az első probléma mindenképpen az, hogy nem rak új sorokat a tmp fájlba másoláskor, pedig az f-ben úgy vannak.

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