char funzione () {
char s[10];
int i;
for (i=0;i<10;i++)
s[i]='x';
return *s;
}
printf("%s",funzione());
Questa istruzione stampa "xxxxxxxxxx" giusto?
char funzione () {
char s[10];
int i;
for (i=0;i<10;i++)
s[i]='x';
return *s;
}
printf("%s",funzione());
Questa istruzione stampa "xxxxxxxxxx" giusto?
No ... quella funzione restituisce un char e non un puntatore a char.
E anche se lo facesse, non deve restituire un puntatore ad un dato allocato al suo interno in quel modo perche' all'uscita s non esiste piu'.
P.S. E l'altra discussione?
No MP tecnici (non rispondo nemmeno!), usa il forum.
No, potrebbe stampare 'x' come 'xxxxxxxxxx' come mandare in crash il programma, visto che dici alla printf che le fornisci una stringa e invece le fornisci un singolo carattere; le stringhe non sono singoli char, ma array di char, e non possono essere restituite in maniera così semplice da una funzione.
Amaro C++, il gusto pieno dell'undefined behavior.
Quindi come posso ottenere lo stesso risultato?
@oregon: se risolvo questo problema ho risolto anche la discussione di prima
Devi allocare dinamicamente la stringa (con la malloc) e restituire il puntatore ...Originariamente inviato da starcraftworld
Quindi come posso ottenere lo stesso risultato?
Non avevo avuto piu' risposte ...@oregon: se risolvo questo problema ho risolto anche la discussione di prima
P.S. Ma tu da quanto programmi con il C?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Ho iniziato 5 anni fa ma da 3 anni non lo uso più spesso.
Come uso la malloc?
http://www.cplusplus.com/reference/c...ib/malloc.htmlOriginariamente inviato da starcraftworld
Come uso la malloc?
No MP tecnici (non rispondo nemmeno!), usa il forum.