Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82

    [C] allocazione dinamica stringa

    Ciao a tutti, volevo chiedervi se c'è un modo per allocare dinamicamente una stringa in base a ciò che l'utente inserisce, senza dover per forza chiedere in anticipo il numero di caratteri della stringa per poi fare la malloc..

    Grazie

    C'è un esercizio in particolare che non mi viene:

    Scrivere un oprogramma che ricevuta in ingresso una stringa, la manipola invertendone il contenuto.
    Il sottoprogramma restituisce il numero di caratteri trovati nella stringa.

    Io ho fatto così ma non gira..


    #include <stdio.h>

    int main()
    {
    char *str,*str2,parola[20];
    int i;

    printf("inserisci parola: ");
    gets(parola);

    if(!(str=(char *)malloc(strlen(parola)*sizeof(char))))
    printf("errore di memoria");

    else
    {
    strcpy(*str,parola);

    for(i=0;i<strlen(parola);i++){

    *(str2+i)=*(str+srtlen(parola)-i);

    }

    printf("parola: ");

    for(i=0;i<strlen(parola);i++){

    printf("%c",*(str2+i));

    }


    }


    system("pause");

    }


    Suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    Ho provato a correggerlo così, ma non viene comunque..

    #include <stdio.h>

    int main()
    {
    char *str,temp[20],temp2[20];
    int i;

    printf("inserisci parola: ");
    gets(temp);

    for(i=0;i<=strlen(temp);i++){
    temp2[i]=temp[strlen(temp)-i];
    printf("%c",temp2[i]);
    }

    if(!(str=(char *)malloc(strlen(temp2)*sizeof(char))))
    printf("errore di memoria");

    else
    {

    strcpy(*str,temp2);



    printf("parola: ");

    for(i=0;i<strlen(temp2);i++){

    printf("%c",*(str+i));

    }


    }


    system("pause");

    }

  3. #3
    Prova questa funzione:
    codice:
    char* getline(const char delimiter){
    
       char *string = NULL;
       size_t i = 1;
    
       if((string = malloc(sizeof(char))) == NULL){
    
          puts("getline");
          exit(EXIT_FAILURE);
    
       }
    
       while(*(string + i - 1) != delimiter && *(string + i - 1) != '\n'){
    
          char *tmp = NULL;
    
          *(string + i - 1) = getchar();
    
          if((tmp = realloc(string, ++i)) == NULL){
    
             puts("realloc error");
    
             free(string);
             string = NULL;
    
             exit(EXIT_FAILURE);
    
          }
    
          string = tmp;
    
       }
    
       return string;
    
    }
    Questa funzione prende in input un carattere, e mette in un buffer dei caratteri, finchè non trova il delimitatore in input o il carattere NEWLINE.


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.