Array di puntatori char

di il
4 risposte

Array di puntatori char

Ho dei problemi con gli array di puntatori in questo esercizio:
#include<stdio.h>
#include<string.h>
void stampa(char *array[], int c);
int main(void){
int quanti;
int i=0;
printf("Quante parole vuoi inserire?\n");
scanf("%d",&quanti);
char *array[quanti];
for(i; i<quanti; i++){
printf("Inserisci parola:\n");
scanf("%s",array);
scanf("%*[^\n]");
scanf("%*c");
}
stampa(array,quanti);
}
void stampa(char *array[],int c){
for(int i=0; i<c; i++){
printf("%s\n",array);
}
}
Dove sbaglio?

4 Risposte

  • Re: Array di puntatori char

    Gli errori sono diversi

    1) usa i tag CODE (pulsante < / >), altrimenti parte il corsivo e non si capisce nulla
    2) leggi le risposte nei thread precedenti. Ti hanno postato un esempio che a quanto pare non hai letto
    3) gli argomenti di base è meglio studiarli prima sui libri. Un puntatore (char *) è un oggetto di dimensione 4 o 8 byte che indica una posizione in memoria, non puoi certo memorizzarci dentro una stringa. Quindi o allochi i byte che ti servono nelle stringhe come ti hanno fatto vedere con "char parole[4][20]", oppure usi la malloc() se vuoi fare un array di puntatori
  • Re: Array di puntatori char

    Weierstrass ha scritto:


    Gli errori sono diversi

    1) usa i tag CODE (pulsante < / >), altrimenti parte il corsivo e non si capisce nulla
    2) leggi le risposte nei thread precedenti. Ti hanno postato un esempio che a quanto pare non hai letto
    3) gli argomenti di base è meglio studiarli prima sui libri. Un puntatore (char *) è un oggetto di dimensione 4 o 8 byte che indica una posizione in memoria, non puoi certo memorizzarci dentro una stringa. Quindi o allochi i byte che ti servono nelle stringhe come ti hanno fatto vedere con "char parole[4][20]", oppure usi la malloc() se vuoi fare un array di puntatori
    Grazie mille per la risposta andro' a controllare le risposte nei thread precedenti che non avevo visto.
  • Re: Array di puntatori char

    Weierstrass ha scritto:


    Gli errori sono diversi

    1) usa i tag CODE (pulsante < / >), altrimenti parte il corsivo e non si capisce nulla
    2) leggi le risposte nei thread precedenti. Ti hanno postato un esempio che a quanto pare non hai letto
    3) gli argomenti di base è meglio studiarli prima sui libri. Un puntatore (char *) è un oggetto di dimensione 4 o 8 byte che indica una posizione in memoria, non puoi certo memorizzarci dentro una stringa. Quindi o allochi i byte che ti servono nelle stringhe come ti hanno fatto vedere con "char parole[4][20]", oppure usi la malloc() se vuoi fare un array di puntatori
    per risolvere l'esercizio usando la malloc cosa dovrei fare?
    #include<stdio.h>
    #include<string.h>
    void stampa(char *array[], int c);
    int main(void){
    int quanti;
    int i=0;
    printf("Quante parole vuoi inserire?\n");
    scanf("%d",&quanti);
    char *array[quanti];
    for(i; i<quanti; i++){
    printf("Inserisci parola:\n");
    scanf("%s",array);
    scanf("%*[^\n]");
    scanf("%*c");
    }
    stampa(array,quanti);
    }
    void stampa(char *array[],int c){
    for(int i=0; i<c; i++){
    printf("%s\n",array);
    }
    }
    
  • Re: Array di puntatori char

    Comincia a risolverlo con l'allocazione statica, ci manca pure che ti metti ad allocare dinamicamente senza aver studiato.
Devi accedere o registrarti per scrivere nel forum
4 risposte