Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    non sai fare l'allocazione dinamica dell'array di stringhe o cosa?
    Proprio questo, non so come creare questo array dinamicamente..

  2. #12
    Originariamente inviato da pop killer
    Proprio questo, non so come creare questo array dinamicamente..
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int num_stringhe = 10;
    	int lungh_stringa = 80;
    	int i;
    	char** strings_array =(char**) malloc(num_stringhe * sizeof(char*));
    	//metti un cotrollo d'errore su strings_array == null
    	
    	for(i = 0; i< num_stringhe ; i++)
    	{
    		strings_array[i] = (char*)malloc(lungh_stringa * sizeof(char));
    		//metti un cotrollo d'errore su strings_array[i] == null
    	} 
    	// libera la memoria con free ed un processo simmetrico (prima il for e poi free(strings_array))
    	return 0;
    }
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #13
    Originariamente inviato da unomichisiada
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int num_stringhe = 10;
    	int lungh_stringa = 80;
    	int i;
    	char** strings_array =(char**) malloc(num_stringhe * sizeof(char*));
    	//metti un cotrollo d'errore su strings_array == null
    	
    	for(i = 0; i< num_stringhe ; i++)
    	{
    		strings_array[i] = (char*)malloc(lungh_stringa * sizeof(char));
    		//metti un cotrollo d'errore su strings_array[i] == null
    	} 
    	// libera la memoria con free ed un processo simmetrico (prima il for e poi free(strings_array))
    	return 0;
    }
    Grazie mille, ma dovresti spiegarmi una cosa, a che serve questa cosa?

    es.
    (int *)malloc(num * sizeof(int);

    Ho capito tutto tranne a cosa servono questo fo**utissimo (int *)

    Scusami una cosa, se faccio

    for(i = 0; i < elem; i++)
    {
    printf("Valore array[%i] (max %i char): ", i, str);
    scanf("%s", &array[i]);
    }

    da errore, se faccio

    for(i = 0; i < elem; i++)
    {
    printf("Valore array[%i] (max %i char): ", i, str);
    scanf("%s", array[i]);
    }

    vs bene, come mai?

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    24
    scusate l'intromissione....se la stringa che acquisisco ha più caratteri della dimensione dell'array...come si può fare.

    cioè dichiaro char string[80]

    e poi con scanf acquisisco string ma ha più di 80 caratteri.

    da errore? e come si può ovviare

    la dimensione dell'array si puo dare dopo aver contato i caratteri della stringa acquisiti con la scanf?

  5. #15
    Originariamente inviato da woss
    scusate l'intromissione....se la stringa che acquisisco ha più caratteri della dimensione dell'array...come si può fare.

    cioè dichiaro char string[80]

    e poi con scanf acquisisco string ma ha più di 80 caratteri.

    da errore? e come si può ovviare

    la dimensione dell'array si puo dare dopo aver contato i caratteri della stringa acquisiti con la scanf?
    Non saro' esperto ma posso risponderti:
    1) Da errore, si puo' ovviare con l'allocazione dinamica, puoi mettere un array molto grande e poi liberare la memoria vuota con free;
    2) Non si puo', appatto che non crei una variabile temporanea, ma deve essere limitata anch'essa, quindi e' inutile.

  6. #16
    Originariamente inviato da pop killer
    Grazie mille, ma dovresti spiegarmi una cosa, a che serve questa cosa?

    es.
    (int *)malloc(num * sizeof(int);

    Ho capito tutto tranne a cosa servono questo fo**utissimo (int *)

    Scusami una cosa, se faccio

    for(i = 0; i < elem; i++)
    {
    printf("Valore array[%i] (max %i char): ", i, str);
    scanf("%s", &array[i]);
    }

    da errore, se faccio

    for(i = 0; i < elem; i++)
    {
    printf("Valore array[%i] (max %i char): ", i, str);
    scanf("%s", array[i]);
    }

    vs bene, come mai?
    Per la prima domanda il (int *) è un cast (cioè una conversione esplicita di tipo) da puntatore a void a puntatore ad inteo.Questo perchè la malloc non sapendo a priori che tipo di array ci allocherai ti restituisce un puntatore a void* (un puntatore di tipo generico diciamo) che per essere utilizzato deve essere convertito.Ora non tutti i compilatori ti danno errore se non lo metti, però dovrebbero e quindi mettilo comunque.

    Per la seconda domanda, la & non ci vuole nel caso acquisisa una stringa perchè la scanf ha bisogno del puntatore all'aria di memoria allocata per i dati da acquisire,siccome il nome di un array di caratteri è già un puntatore non hai bisogno di ottenere l'indirizzo di quel puntatore, va giàbene così.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #17
    Originariamente inviato da pop killer
    Non saro' esperto ma posso risponderti:
    1) Da errore, si puo' ovviare con l'allocazione dinamica, puoi mettere un array molto grande e poi liberare la memoria vuota con free;
    2) Non si puo', appatto che non crei una variabile temporanea, ma deve essere limitata anch'essa, quindi e' inutile.
    Di fatto è così
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #18
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    24
    a questo punto come faccio a controllare l'errore, cioè se compare l'errore come posso rimediare senza compromettere la continuità del programma...
    es:
    se la stringa acquisita è più di 80 caratteri
    stamapare a video impossibile acquisire la stringa
    e richiedere di inserire un'ulteriore stringa

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Scusa, ma se tu allochi un buffer di 2000 caratteri che poi liberi, pensi che l'utente possa usarli tutti da tastiera?

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    24
    certo che no...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.