Newsgroup: it.hobby.elettronica.digitale
Titolo: Stringhe in linguaggio C, Help

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char TS2000[]="ABCDEFGHILMANN";
char dest[12];
char destin[12];
int8 i;
int8 j;
void main()
{
{
for(i=0;i<5;i++)
dest[i]=TS2000[i];
dest[5]=0;
}
printf(dest); // SCRIVE "ABCDE" OK!!!
printf("\r\n");
{
for(j=5;j<10;j++)
destin[j]=TS2000[j];
destin[10]=0;
}
printf(destin); // NON SCRIVE NULLA   PERCHE' ?
}
Grazie per aver letto questo messaggio.Sono di nuovo alle prese con le 
stringhe!!!
Il primo printf(dest) scrive corretto "ABCDE"
il secondo printf(destin) e' vuoto
Qualcuno mi puo' aiutare ?
Grazie
Jo

 [CUT]
destin[0]=?
destin[1]=?
destin[2]=?
destin[3]=?
destin[4]=?
Se
destin[0]='\0' la stringa e' vuota. quello che scrivi dopo non viene letto 
dal printf
-- 
 ************** (.)_(.) *******************
 Un amico � uno che sa tutto di te e,
 nonostante questo, gli piaci
(E. Hobbard) 

 ha scritto nel messaggio 
news:4adf1699$0$1102$4faf...@reader3.news.tin.it...


 Jo
non e' uguale al primo. parte da 5 e non da zero


 ha scritto nel messaggio 
news:4adf1def$0$1105$4faf...@reader3.news.tin.it...


 Grazie
No non mi sono spiegato.
Tu inserisci il risultato dalla quinta posizione di una stringa (che puoi 
farlo tranquillamente) nella quinta posizione dell'altra. In teoria non c'e' 
alcun problema ma cosa contengono le prime 5 posizioni di destin?
Se esiste anche una sola che contiene 0 allora la stringa si interrompe 
prima.
Vuoi vedere il tuo ciclo cosi' come l'hai scritto? fai cosi':
 for(j=5;j<10;j++)
 destin[j-5]=TS2000[j];
 destin[j]=0;
  printf(destin);
Spero di essere riuscito ad illuminarti :-)
Ciao


 Ce' qualche altro metodo per estrarre a partire da qualsiasi posizione ?
Se per estrarre intendi stampare
 printf("%s\n", &destin[5]);
o anche
 printf("%s\n", destin+5);
vedi aritmetica dei puntatori.

 ha scritto nel messaggio 
news:4adf2539$0$1097$4faf...@reader3.news.tin.it...


 Sbaglio qualcosa ?
Si, ma non nell'assunzione. Dovrebbe scriverti effettivamente FGHIL. Ho 
provato il micro codice e da me funziona correttamente. Prova a vedere se 
per caso hai tralasciato qualcosa. forse nell'ultimo destin a zero non hai 
usato j?


 ha scritto nel messaggio 
news:4adf4362$0$1097$4faf...@reader3.news.tin.it...


Grazie della risposta.
Il mio intento e' quello di estarre una sottostringa
da una stringa.
Jo
"Andrea D'Amore" <and.da...@LOSPAM.gmail.com.invalid> ha scritto nel 
messaggio news:and.damoreVIA-2D5...@nntp.aioe.org...


 Il mio intento e' quello di estarre una sottostringa
Che intendi con estrarre?

Ciao,
ho la stringa
char TS2000[]="ABCDEFGHILMANN";
voglio estrarre alcuni caratteri della stringa "CDEF" oppure "AB" ecc
in maniera da formare altre stringhe, per poi poterle usare separatamente.
Ciao
Jo
"Andrea D'Amore" <and.da...@LOSPAM.gmail.com.invalid> ha scritto nel 
messaggio news:and.damoreVIA-99A...@nntp.aioe.org...


 in maniera da formare altre stringhe, per poi poterle usare separatamente.
Il modo piï¿œ corretto ï¿œ allocare le altre stringhe e poi con una semplice
strncpy() copi la parte che ti interessa.
es:
const char TS2000[]="ABCDEFGHILMANN";
char dest[15];
/* Copia in dest 5 caratteri a partire
  * dalla 'E' (che ï¿œ in posizione 4) */
strncpy(dest, &TS2000[4], 5);
Quando lavori con le stringhe assicurati sempre di avere spazio a 
sufficienza nella stringa di destinazione, altrimenti sovrascriverai 
porzioni casuali di spazio in RAM!
Per la documentazione di strncpy() basta cercare con google.
Ciao
-- 
  _|/ Francesco Sacchi - Develer S.r.l., R&D dept.
   |\ 
http://www.develer.com/
 - 
http://www.bertos.org/

 Per la documentazione di strncpy() basta cercare con google.
Ah, mi sono dimenticato di dire che strncpy non termina la stringa di 
destinazione, devi aggiungere manualmente il '\0' finale se necessario.


>  * dalla 'E' (che � in posizione 4) */


> 
Stai imparando a quotare?
--
ciao
  Stefano

   Stefano

>  * dalla 'E' (che � in posizione 4) */
