Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Lettura stringhe

  1. #1

    [C] Lettura stringhe

    Come faccio a leggere una stringa di lunghezza arbitraria data in input? Usando puntatore e calloc o malloc...

  2. #2
    crei un puntatore p a char
    devi leggere ogni carattere digitato uno ad uno con getchar
    ogni volta che leggi un carattere fai un realloc della memoria sul puntatore creato per trovare uno spazio in memoria che possa contenere anche questo carattere e quindi accodi il carattere salvato agli altri partendo dal puntatore (qualcosa tipo p[i]=carattereInserito)
    xxx

  3. #3
    non c''e un codice già fatto?tipo un'estensione di gets()

  4. #4
    ti posto quella che mi son scritto io:
    codice:
    /*funzione che gestisce lo  storage dinamico in memoria dell'input da tastiera*/
    char *input()
    {
        int i=0;
        char *p;
        char *e="Memoria insufficiente";
        char carattere;
        
        /*
        alloco la quantità di memoria necessaria a contenere un tipo di dato char
        e faccio il casting del risultato (un puntatore a quella zona di memoria)
        al tipo puntatore di char (char *)    
        */
        p = (char *) malloc(sizeof(char));
        
        if (p==NULL)
        {
            return e;
        }
        
        p[i++]=getchar();
        
        if (p[0]=='\n') /*Caso in cui viene premuto subito invio*/
        {
            p[0]='\0';
            return p;
        }
        
        for(i=1;;i++)
        {   
            /*
            rialloco la memoria in modo da averne disponibile tanta quanta ne serve
            per ospitare (i+1) variabili di tipo char (totale caratteri nell'array)
            */
            p = (char *) realloc (p, (i+1) * sizeof(char));
            
            if (p==NULL)
            {
               return e;
            }
            
            carattere=getchar();
            
            if (carattere=='\n') /*esco dal ciclo (termino la stringa) quando l'utente preme invio*/
            {
               p[i]='\0';
               break;
            }
            else
            {
               p[i]=carattere;
            }
        }
        
        return p;
    }
    xxx

  5. #5
    ma alla funzione non gli apsso niente come parametro?
    tipo un char *input(char *)
    no?

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da cicciobaliccio
    ma alla funzione non gli apsso niente come parametro?
    tipo un char *input(char *)
    no?
    ma a vedere il sorgente postato direi di no...

    basta che fai

    codice:
    ...
    char* stringa = input();
    ...
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.