Restituire una stringa in memoria non modificabile

di il
2 risposte

Restituire una stringa in memoria non modificabile

Salve ragazzi dovrei scrivere un porogramma che sostanzialmente faccia questo riceva una stringa da un sottoprogramma e la salvi in una parte di memoria non modificabile sostanzialmente non sò se sono chiaro ma scrivere :

  char var[]="ciaomondo";  // questa variabile non può mai più essere modificata sta in memoria statica

se invece scrivo :

var=strcpy(var,stringa); // questo valore è modificabile successivamente 

il mio problema è che questa stringa deve essere scritta dopo averla ricevuta da un sottoprogramma e non so' bene come muovermi ho provato a scrivere qualcosa ma non compila memmeno vi posto il sorgente:



 char* funzione_banale(const char*);
int main(int argc, const char * argv[])
{
    char *string;
    
    string=(char*)malloc(sizeof(char));
    
    scanf("%s",string);
    
  
    char *adesso=NULL;
    
    
    adesso=(char*)malloc(sizeof(char));
    adesso=(strcpy(adesso,funzione_banale(string)));

    printf("%s",adesso);
    adesso[1]='s';
    
    printf("%s",adesso);
    
    return 0;
}




 char *funzione_banale(const char *x)
{
    return x;   // qui da un warring  prendo una costante e restituisco un char normale 
}

Consideriamo ora una funzione
char * nmr_n_lttr(unsigned int n)
che restituisce un numero espresso in caratteri, ma senza le vocali. Per esempio, nmr_n_lttr(23) ? "vnttr'".
(a) [+0punti]Piùfacile:scriviamolafunzionenmr_n_lttr()assumendo che il risultato di numero_in_lettere() sia una stringa scrivibile—cioè della quale possiamo modificare il contenuto.
(b) [+3 punti] Meno facile: scriviamo la funzione nmr_n_lttr() assumendo che il risultato di numero_in_lettere() sia una stringa che non possiamo modificare.
//DEVO cercare di fare la lettera b
//numero_in_lettere() preso un numero lo trasforma in lettere assumiamo che già esiste questa funzione

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte