Keresés

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

  • WonderCSabo

    félisten

    válasz it_service #3281 üzenetére

    Félreérted a C string kezelését. Stringeket akarsz beolvasni, nem?

    C-ben a stringek karakter tömbbökként vannak reprezentálva. Minden string végén kell lennie egy lezáró 0 -nak a tömbben. Ez nem a tömb végét, hanem a string végét jelzi, ergó a tömbben bárhol, lehet. A stringnek bele kell férnie a lezáró nullával együtt a tömbbe, különben gáz lesz (ergó a tömb mérete > string hossza - 1).

    Tehát, amikor Te beolvastad a tömbbe a stringet, akkor nem az n-dik string sort írtad bele, és tároltad az összeset, hanem csak mindig felülírtad az előzőt, mivel egy karaktertömb egy stringet tárol (persze még ez se ment, mivel rossz volt a szintaktika).

    Átírtam, így mindig beolvassa a stringet, és ha a 100-at olvasta be, akkor kiírja.

    Ha stringek tömbjét akarsz, akkor karakterek mátrixában kell tárolnod őket.

    A számlálóra pedig 100-at kell vizsgálnod, nem 99-et, mivel a vizsgálat előtt növeled meg azt, nem utána, és 0-ról indul.

    system hívásokat meg ne használj ilyenre. Ha meg akarod akadályozni az ablak bezáródásást, hívj egy getchar() -t a return előtt. Return pedig mindig kell a main fv.-ben ... (meg persze minden nem void fv.-ben)

    #include <stdio.h>

    int main()
    {

    FILE* file = fopen("beolvas.txt", "r");
    char str[200];
    int szamlalo = 0;

    while(fscanf(file, "%s", str) != EOF)
    {
    szamlalo++;
    if(szamlalo == 100)
    printf("%s", str);
    }

    fclose(file);
    getchar();

    return 0;
    }

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