Salve a tutti, mi sapreste dire come creare una stringa dinamica con malloc ?
Salve a tutti, mi sapreste dire come creare una stringa dinamica con malloc ?
codice:#include <stdio.h> #include <stdlib.h> int main() { char* stringa; int n=25; stringa=(char*)malloc(sizeof(char)*n); scanf("%s", stringa); printf("%s", stringa); }
Usa la funzione "cerca" del forum.stringa dinamicaOriginariamente inviato da Ghemon-a
Salve a tutti, mi sapreste dire come creare una stringa dinamica con malloc ?
In questo modo ho 25 byte a disposizione ?Originariamente inviato da _Alfabetagamma_
codice:#include <stdio.h> #include <stdlib.h> int main() { char* stringa; int n=25; stringa=(char*)malloc(sizeof(char)*n); scanf("%s", stringa); printf("%s", stringa); }
La prossima volta cercherò meglio nel forum![]()
Comunque, ho trovato questo programma, ma è per le stringhe. Come faccio a utilizzarlo anche per un vettore di interi ?
codice:#include <stdlib.h> #include <stdio.h> #define STR_BLOCK 10 char *readLine(void) { char * string = malloc ((STR_BLOCK + 1) * sizeof (char)); size_t length = 0; do { if (!length || !(length % STR_BLOCK)) string = realloc(string, (length + STR_BLOCK + 1) * sizeof (char)); string[length] = (char) getchar(); } while (string[++length -1] != '\n'); string[length - 1] = '\0'; string = realloc(string, length * sizeof (char)); return string; } int main(void) { char * str; puts("Inserisci una linea:"); str = readLine(); printf("Hai inserito: \"%s\"\n", str); free(str); return 0; }
Comunque ora se ti servisse un vettore di float prova a pensarci e a testare. Se vieni qui e ti diamo le soluzioni già fatte a te che serve? Nella vita prima di chiedere si passa delle ore a TESTARE, non a CERCARE. Era un programma che necessitava di due minuti e di 5 righe da modificare rispetto al mio precedente. Fa piacere aiutare gli altri però poi uno si chiede se realmente fatto così ti serva a qualcosa. A te le riflessioni e il codice, con il consiglio di provare a farlo con i float, così da capire il MECCANISMO, non rubare del codice "pappa-pronta".codice:#include <stdio.h> #include <stdlib.h> int main() { int* vettore; int n=5,i; vettore=(int*)malloc(sizeof(int)*n); for(i=0; i<n; i++) scanf("%i", (vettore+i)); for(i=0; i<n; i++) printf("%i\n", *(vettore+i)); system("pause"); }
Ciao![]()
Hai perfettamente ragione, infatti è quello il mio obbiettivo. Gli algoritmi che mi hai scritto sono riuscito a farli anche io, ma il problema è che non riesco a sviluppare un algoritmo che non abbia bisogno di un numero n per allocare la memoria, come ad esempio quello che ho postato io, infatti quel programma ti permette di allocare memoria mano mano che viene inserito un nuovo carattere, Vorrei usare lo stesso metodo ma con un vettore di caratteriOriginariamente inviato da _Alfabetagamma_
Comunque ora se ti servisse un vettore di float prova a pensarci e a testare. Se vieni qui e ti diamo le soluzioni già fatte a te che serve? Nella vita prima di chiedere si passa delle ore a TESTARE, non a CERCARE. Era un programma che necessitava di due minuti e di 5 righe da modificare rispetto al mio precedente. Fa piacere aiutare gli altri però poi uno si chiede se realmente fatto così ti serva a qualcosa. A te le riflessioni e il codice, con il consiglio di provare a farlo con i float, così da capire il MECCANISMO, non rubare del codice "pappa-pronta".codice:#include <stdio.h> #include <stdlib.h> int main() { int* vettore; int n=5,i; vettore=(int*)malloc(sizeof(int)*n); for(i=0; i<n; i++) scanf("%i", (vettore+i)); for(i=0; i<n; i++) printf("%i\n", *(vettore+i)); system("pause"); }
Ciao![]()
Prova a studiarci sopra, non dovrebbe essere troppo complicato, ci sono due cose su cui devi riflettere:Originariamente inviato da Ghemon-a
Hai perfettamente ragione, infatti è quello il mio obbiettivo. Gli algoritmi che mi hai scritto sono riuscito a farli anche io, ma il problema è che non riesco a sviluppare un algoritmo che non abbia bisogno di un numero n per allocare la memoria, come ad esempio quello che ho postato io, infatti quel programma ti permette di allocare memoria mano mano che viene inserito un nuovo carattere, Vorrei usare lo stesso metodo ma con un vettore di caratteri
1) la lettura di una stringa va avanti fino a che non viene il letto il carattere '\n' (INVIO):
l'inserimento di interi prevede d'inserire ogni volta un numero e di premere INVIO, come risolvere?
2) occorre decidere un valore per terminare l'inserimento (a tua scelta, 0, 12, 345, ..)
Ma si può fare dai![]()
Salute a voi, da Laikius!
--> Faber est suae quisque fortunae <--
Questo è un altro paio di maniche!Originariamente inviato da Ghemon-a
Hai perfettamente ragione, infatti è quello il mio obbiettivo. Gli algoritmi che mi hai scritto sono riuscito a farli anche io, ma il problema è che non riesco a sviluppare un algoritmo che non abbia bisogno di un numero n per allocare la memoria, come ad esempio quello che ho postato io, infatti quel programma ti permette di allocare memoria mano mano che viene inserito un nuovo carattere, Vorrei usare lo stesso metodo ma con un vettore di caratteri![]()
I suggerimenti ricevuti da Laikius dovrebbero essere un punto di partenza![]()
Certamente![]()
Vi farò sapere appena trovo una soluzione