Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] ottenere dimensione stringa

    ciao

    #include <stdio.h>
    #include <malloc.h>

    int main(){
    int numero;
    char *dstringa;
    char stringa1[] = "ciao a tutti";
    char stringa2[] = "oggi è una bella giornata";
    numero = sizeof(stringa1)+sizeof(stringa2);
    dstringa = (char *)malloc(sizeof(char) * numero);
    return(0);
    }

    come faccio a verificare che dstringa punta a un array di 39 caratteri??

  2. #2
    per sconoscere la lunghezza di una stringa puoi usare la funzione lstring ,contenuta in string.h, che restituisce la lunghezza della stessa passata come argomento.
    Nel segute modo ad es
    codice:
    int n=0;
    char stringa[100];
    n=lstring(stringa);
    poi usi n come valore per la calloc/malloc se ti serve allocare una stringa della dimensione della somma di entrambe.


    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    lstring fa parte dello standard ?
    Di solito per la lunghezza di una stringa io uso strlen.
    Anche printf ritorna un int pari alla lunghezza della stringa.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4
    $ gcc string.c -o string -static

    ottengo il seguente messaggio

    /tmp/cc0JMoqB.o: In function `main':
    /tmp/cc0JMoqB.o(.text+0x8c): undefined reference to `lstring'
    collect2: ld returned 1 exit status


    ???

  5. #5
    Originariamente inviato da matteolandi
    $ gcc string.c -o string -static

    ottengo il seguente messaggio

    /tmp/cc0JMoqB.o: In function `main':
    /tmp/cc0JMoqB.o(.text+0x8c): undefined reference to `lstring'
    collect2: ld returned 1 exit status


    ???
    Metti in cima al file:
    #include <string.h>

    e per ottenere la lunghezza di una stringa:

    strlen( stringa );


  6. #6
    Originariamente inviato da infinitejustice
    lstring fa parte dello standard ?
    Di solito per la lunghezza di una stringa io uso strlen.
    Anche printf ritorna un int pari alla lunghezza della stringa.
    sisi errore strlen no lstring..errore di battitura(nn so dove l'ho tirato fuori questo lstring )

    ciao
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  7. #7
    Originariamente inviato da andrea_NET-_DSL
    per sconoscere la lunghezza di una stringa puoi usare la funzione strlen ,contenuta in string.h, che restituisce la lunghezza della stessa passata come argomento.
    Nel segute modo ad es
    codice:
    int n=0;
    char stringa[100];
    n=strlen(stringa);
    poi usi n come valore per la calloc/malloc se ti serve allocare una stringa della dimensione della somma di entrambe.


    edit

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    numero = strlen(stringa1)+strlen(stringa2);
    stringa = (char *)malloc(sizeof(char) * numero);

    io uso malloc per allocare lo spazio in memoria per il numero di caratteri specificato. vorrei avere la possibilità di fare una verifica. accertarmi che a "stringa" siano stati effettivamente allocati quei byte. strlen mi restituisce la lunghezza di una stringa che ha già un valore, ma nel mio caso non ho assegnato ancora nessun valore

    come posso fare?

  9. #9
    Per allocare una stringa in una nuova locazione di memoria, prova a dare un'occhiata alla funzione strdup(...)
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  10. #10
    Per la lunghezza di una stringa posso fare benissimo così:

    codice:
    for(i=0;str[i]!='\0';i++);
    paraticamnete questo for incrementa la i fino a che il carattere della stringa di posizione i è uguale al carattere di fine stringa...

    In poche parole dopo il ciclo la i assume valore corrispondente alla lunghezza della stringa...

    Poi invece se vuoi allocare una stringa direttamente in memoria devi prima di tutto includere la malloc.h...

    cmq il codice è questo:

    codice:
    #include<stdio.h>
    #include<malloc.h>
    
    char *str;
    int lung;
    
    main() {
    
    printf("\n\nInserire la grandezza della stringa:");
    scanf("%d",&lung);
    
    str=(char *)malloc(sizeof(char)*lung); 
    
    //alloco la stringa di dimensione di un charb moltiplicato  per il numero di caratteri che voglio
    
    //ora la stringa è stata creata e la posso usare come una stringa normalissima
    
    printf("\n\nInserisci una stringa:");
    scanf("%s",str);
    printf("\nLa stringa inserita è %s",str);
    
    
    //posso anche accedere ad una singola cella
    
    str[4]='c';
    
    
    }
    ecco questo codice alloca in memoria una stringa della dimensione che vuoi...

    ahh inoltre ricordati che alla fine della stringa devi mettere il \0...

    ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

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