PDA

Visualizza la versione completa : [C] quesito credo proprio banale ma che non riesco a risolvere


Ghiozzo
12-09-2010, 18:40
Ho scritto questo banalissimo codice in C:


char stringa[30]="testo di prova";
char prova[30];
int k;
for(k=0;k<=29;k++){
prova[k]='0'; }
printf("risultato stringa %s",prova);

io vorrei che mi stampasse semplicemente il vettore "prova" che non ha niente a che vedere con "stringa" ma quello che mi compare a video è una fila di zeri con a seguito anche la scritta "testo di prova" e alcune lettere e simboli a casaccio!

lo so che sarà un cosa banalissima che sbaglierò ma non riesco proprio a ricordarmela, sto rispolverando c dopo un bel po' di tempo! Grazie mille!

Alex'87
12-09-2010, 18:50
Che compilatore usi e su che sistema operativo? Io ho appena provato col gcc su Snow Leopard e il programma mi stampa correttamente risultato stringa 000000000000000000000000000000

Ghiozzo
12-09-2010, 18:52
io uso dev c++ su windows 7. Ma non mi ha mai dato problemi fin'ora :(

Ushas
12-09-2010, 18:55
Non me ne intendo molto di stringhe, proprio non mi entrano. Ho cercato di capire cosa c'è che non va nel codice ma non sono riuscita a farlo funzionare.
Non so se ti può aiutare, magari ti "illumina" ( :confused: ) ma ho notato che se cambi la condizione di terminazione del for, per esempio metti k<=35, quello che viene fuori è una sfilza di 0 più lunga e invece che "Testodiprova" ci viene scritto solo "diprova".
I simboli strani mi vengono solo se cambio la condizione di terminazione con un numero piccolo, per esempio con 4 mi vengono 4 zeri e questi simboli attaccati, senza però la scritta "Testodiprova".

edit: uso gcc su (ahimé) windows vista

Ghiozzo
12-09-2010, 18:59
C'è qualcosa che non va però :D

Se a Alex'87 funziona...vuol dire che il codice alla fine è corretto no??

Non ci capisco più niente :dhò:

Mashin
13-09-2010, 10:11
Non manca il terminatore di stringa ? Oddio non ricordo con esattezza ma dovrebbe essere il carattere '\n'.

Dovresti quindi imporre che prova[29]='\n' appena finito il ciclo e poco prima della stampa a video.

fusionalfa
13-09-2010, 10:38
Originariamente inviato da Ghiozzo
io uso dev c++ su windows 7. Ma non mi ha mai dato problemi fin'ora :(



elimina fisicamente dev e scaricati netbeans,poi facci sapere :D

Alex'87
13-09-2010, 10:57
Originariamente inviato da Mashin
Non manca il terminatore di stringa ? Oddio non ricordo con esattezza ma dovrebbe essere il carattere '\n'.

Dovresti quindi imporre che prova[29]='\n' appena finito il ciclo e poco prima della stampa a video. Il carattere terminatore è '\0'. E probabilmente è questo il problema, nella sua stringa manca :master: Strano che il gcc del mac non faccia problemi :master: Appena ho un attimo faccio qualche altra prova :master:

edit

Comunque quoto quello qui sopra, elimina il devcpp, è il male :98: :98:

Mashin
13-09-2010, 11:04
forse su mac lo setta in auto o c'e' qualche opzione di SO che evita di stampare oltre il limite imposto della stringa ?

Cmq si ecco terminatore '\0' non ricordavo sorry ^^''

Ghiozzo
13-09-2010, 19:58
ma netbeans è anche per C? sapevo che era per Ruby...

Loading