Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 13-07-2004, 17.02.17   #1
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
Fine Array in C

Ciao a tutti,
di solito, se non ne so prima il contenuto, dichiaro un array di char in questo modo:

#define SIZE 1024
char miaStringa[SIZE];

nell'esecuzione del programma come posso intercettare se si prova a scrivere oltre "miaStringa[SIZE-1]"?

es: acquisendo una stringa con gets(miaStringa), se l'utente scrive un poema crea un bel pasticcio...

spero di essermi spiegato decentemente...

Ciao
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 13-07-2004, 17.07.14   #2
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Usi la strlen....


size_t strlen(const char *s);


Ma se fai una "gets" e l'utente (che ha sempre il diavolo in corpo) ti fa andare in buffer overflow .. tu per sicurezza metti li terminatore '\0' all'ultimo carattere della tua stringa (dopo aver fatto gets) .. in questo modo ti assicuri che qualsiasi chiamata a funzioni successive provocherà una letura non oltre il terminatore...

Consiglio sempre di prendere l'input carattere per carattere... questo almeno in C puro.

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 13-07-2004, 17.12.28   #3
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
scusa la mia ignoranza ma... cosa rappresenta "size_t"?

per il resto quindi:
gets(stringa);
stringa[SIZE-1] = '/0';

così? ma nella parte di memoria eccedente che ho occupato con gets() non sovrascrivo?
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 13-07-2004, 17.26.25   #4
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Diciamo che size_t è un tipo specifico per le "misure" .. praticamente in questo caso è un int.. size_t è una convenzione che si usa in fase di misurazioni o in return di valori di lunghezza...

Certo che sovrascrivi (a meno che la funzione non sia progettata per non farlo.. molte funzioni lo sono compresa "gets").. ma almeno eviti di leggere o di fare operazioi con le schifezze .. ecco perché consiglio di prendere sempre l'input carattere per carattere...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 13-07-2004, 17.34.41   #5
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
(Y) grazie...

sei fantastico....






___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 13-07-2004, 21.29.48   #6
pholcus
Linux Supporter
 
L'avatar di pholcus
 
Registrato: 02-12-2000
Loc.: Monza
Messaggi: 1.987
pholcus promette bene
Usa fgets , mai gets, nn e' sicura..

char * fgets(char *str, int size, FILE *stream);

Al piu' vengono letti size-1 caratteri, e sei a posto, nn devi fare altri controlli
pholcus non è collegato   Rispondi citando
Vecchio 13-07-2004, 22.37.40   #7
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
(Y)

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 13-07-2004, 22.54.12   #8
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
(Y) ok
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 10.01.48   #9
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
... ho scritto:
fgets(stringa, SIZE-2);

come "FILE *stream" cosa metto? non ho bisogno di salvarlo!
posso fare una cosa di questo tipo? :
fgets(stringa, SIZE-2, stringa)

ciao...
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 10.08.39   #10
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
... ho messo "stdin" ... scusate ma ho sonno questa mattina



___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 10.11.46   #11
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
e ho notato che SIZE-2 non è corretto....
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 10.16.28   #12
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
fgets(tua stringa,sizeof(tua stringa),stdin);
LoryOne non è collegato   Rispondi citando
Vecchio 14-07-2004, 13.19.05   #13
pholcus
Linux Supporter
 
L'avatar di pholcus
 
Registrato: 02-12-2000
Loc.: Monza
Messaggi: 1.987
pholcus promette bene
#define STR_SIZE 4096
char string[STR_SIZE];

fgets(string, STR_SIZE, stdin);

pholcus non è collegato   Rispondi citando
Vecchio 16-07-2004, 18.48.05   #14
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
(Y)
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[RH] che fine ha fatto redhat? doctorwho Linux e altri Sistemi Operativi 3 12-07-2005 11.55.59
Che fine ha fatto l'ex min.Sirchia riker Chiacchiere in libertà 16 25-04-2005 17.47.04
problemi a fine scrittura ivix Masterizzazione Giochi Games 6 11-02-2004 21.19.48
Che fine ha fatto GiacomoCT handyman Chiacchiere in libertà 1 03-12-2003 00.53.23
Terminator 3...che sia proprio la fine? Lu(a Chiacchiere in libertà 49 25-09-2003 15.47.04

Orario GMT +2. Ora sono le: 22.35.21.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.