PDA

Visualizza la versione completa : [C] ottenere dimensione stringa


matteolandi
11-05-2004, 20:05
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??

andrea_NET-_DSL
11-05-2004, 20:35
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

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.


:ciauz: :)

infinitejustice
11-05-2004, 20:58
lstring fa parte dello standard ? :dottò:
Di solito per la lunghezza di una stringa io uso strlen.
Anche printf ritorna un int pari alla lunghezza della stringa.

matteolandi
11-05-2004, 20:59
$ 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


???

GNAWS
11-05-2004, 21:11
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 );

:ciauz:

andrea_NET-_DSL
11-05-2004, 21:50
Originariamente inviato da infinitejustice
lstring fa parte dello standard ? :dottò:
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 :fagiano: )

ciao :ciauz:

andrea_NET-_DSL
11-05-2004, 21:52
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

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.


:ciauz: :)

edit :fagiano:

:D

matteolandi
11-05-2004, 22:40
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?

m@ximo
12-05-2004, 14:08
Per allocare una stringa in una nuova locazione di memoria, prova a dare un'occhiata alla funzione strdup(...)

I'mtheleader
12-05-2004, 18:31
Per la lunghezza di una stringa posso fare benissimo così:




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:




#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 :ciauz: :ciauz:

Loading