29. december 2002 - 18:46Der er
12 kommentarer og 2 løsninger
er gets() farlig??
Hejsa.
Jeg er relativ ny indenfor C-programmering, men jeg har da fået rimelig styr på det indtil videre. Jeg sidder i øjeblikket og leger med forskellige eksempler med GNU/GCC på min Red Hat 8.0 maskine. Alt funker perfekt, men:
Jeg får en compiler warning der siger: "the gets function is dagerous and should not be used".
Hvad for alternativer er der hvis man skal læse tekstrenge med mellemrum i (altså så scanf() ikke kan bruges)??
Hvad med når man læser filer med fgets()?? andre alternativer??
Jeg leder efter noget der er "platformkombatibelt", da jeg benytter både windows/linux til at programmere på.
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.
hehe....ja, der kan man se......tænkte ikke på at bruge man......findes der andre alternativer? og hvad med et eksempel eller 2 - 30 point for en henvisning til man.....:D
char *fgets(char *str, int maxchar, FILE *file_ptr);
udover fil-pointeren som alle fxxxx har ekstra i forhold til xxxx, så har fgets også et argument der fortæller hvor mange bytes der maksimalt må læses (=hvad der er plads til).
Derfor kan fgets ikke bruges til buffer overflow.
Den "manglende" parameter til gets er en sikkerhedsmæssig katastrofe og en meget stor del af alle sikkerheds-huller (udenfor Windows verdenen) skyldes brug af gets.
tak for de hurtige svar begge to.....½ til hver......lige en sidste ting.....når jeg så læser med fgets() med en buffer på 50 char og teksten er større, hvordan læser jeg så videre?
Altså det må være et loop hvor den læser indtil EOF eller EOL eller noget, men hvordan?
jo, selvfølgelig....prøver bare at finde ud af om den ikke har "fejl" som scanf(), så man "mister" noget tekst, hvis der bliver sendt et tegn, men det ser det ikke ud til.
ahh...perfekt....det sad jeg lige og rodede med....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.