Kezdőlap › Fórumok › Programozás › C-fejlesztés, KDevelop, stb…
- This topic has 184 hozzászólás, 25 résztvevő, and was last updated 20 years, 9 months telt el by
admin.
-
SzerzőBejegyzés
-
2004-05-09-20:45 #1915643
Ja, értem.
Még nem vagyok túl járatos az ilyen jelölésekben, de most, hogy mondod, télleg így egyértelmû.kl223
2004-05-09-21:02 #1915644Ez nem is szabványos, csak én találtam ki, mert úgy gondoltam logikus és egyszerûbb, mitha leírnám, hogy ez egy int típusú változó.
2004-05-10-08:53 #1915645Vagy esetleg nincs olyan gnu progi, amiben ez benne van, mert akkor kiollóznám belõle…
kl223mplayer? 😀
2004-05-10-17:54 #1915646Vagy esetleg nincs olyan gnu progi, amiben ez benne van, mert akkor kiollóznám belõle…
kl223mplayer? 😀
Ha nekem kiszeded az mplayer forrásából azt a fgv-t, ami az AVI fájlok FPS-ét megnézi, és átalakítod úgy, hogy a következõ formában legyen hívható (pl):
double miAzFPS(char *fajlnev);
Akkor megköszönöm neked… ;-))))
Szerintem csak van vmi eccerûbb módszer, és az ezirányban elindított topicban (lsd az „FPS kiszedése az AVI-ból” c. topic) ajánlottak is egy pár egyszerûbbet.
kl223
2004-05-10-18:57 #1915647Más téma: adva van a következõ struktúra:
Code:struct szoveg{
char sz[250];
struct szoveg *next;
};
Amint az látszik, ebbõl majd egy láncolt lista akar lenni. Nos, nézzük a kódot, ami feltölti a listát:
Code:FILE *fopen(), *fp;char ch[250];
struct szoveg *elso, *aktualis;
… /* itt megnyitjuk a fájlt, stb. */
aktualis = elso;
while ( fgets( ch, 250, fp ) != NULL )
{
aktualis = malloc( sizeof( struct szoveg ) );
aktualis->sz = ch;
aktualis = aktualis -> next; /* ez lenne itt a továbbcsatolás */
}
fclose(fp);
A fájlt BIZTOS, hogy megnyitja, mert tudok belõle olvasni, ha pl. beiktatok a cikluson belülre egy printf( ch ); parancsot, akkor kiírja a fájl tartalmát. A program egyébként hiba nélkül lefordul és lefut, de amikor ezután a kódrészlet után beírom ezt:
Code:printf( elso -> szoveg );/* vagy ezt: */
printf( elso -> next -> szoveg );
Akkor szegmentálási hibával leáll.
2004-05-10-19:04 #1915648Még csak rápillantottam, de a filenyitást lehet ellenõrizni:
if (!(f = fopen(„x.txt”, „rt”))) {
fprintf(stderr, „Nem sikerült megnyitni a filet”);
exit(ERRORCODE)
}2004-05-10-19:12 #1915649while ( fgets( ch, 250, fp ) != NULL )
{
aktualis = malloc( sizeof( struct szoveg ) );
aktualis-]sz = ch;
aktualis = aktualis -] next; /* ez lenne itt a továbbcsatolás */
}Elõször is, a malloc-kot a cikluson belül használtad, ami azt jelenti, hogy minden egyes alkalommal lefoglalsz egy új aktualist új címmel.
2004-05-10-19:21 #1915650Szerintem nem fogyott el a memória, mert teszteltem, a ciklus közben a tárfoglalás után hibátlanul hozzáfértem a struktúrához, tehát lefoglalni lefoglalta.
Szerinted az az elsõ aktualis=elso az ott jó?
Meg ez: aktualis = aktualis -] next;
Ha kilépek a programból, felszabadul automatikusan a lefoglalt tárterület?
kl223
2004-05-10-19:21 #1915651Ez pedig nem másolja át a stringet:
aktualis-]sz = chstrcpy-t használj, vag közvetlenül rakd be az sz-be
Itt egy példa:
struct szoveg
{
char sz[250];
struct szoveg *next;
} aktualis;fgets(aktualis.sz, 250, fp);
2004-05-10-19:22 #1915652Szerintem nem fogyott el a memória, mert teszteltem, a ciklus közben a tárfoglalás után hibátlanul hozzáfértem a struktúrához, tehát lefoglalni lefoglalta.
Szerinted az az elsõ aktualis=elso az ott jó?
Meg ez: aktualis = aktualis -] next;
Ha kilépek a programból, felszabadul automatikusan a lefoglalt tárterület?
kl223
Azt hiszem igen, de jobb felszabadítani..
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz