|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[C] Urgente...Distanza tra 2 puntatori a char
Ciao,
mi trovo a dover fare una cosa un po' particolare (anche se non credo sia difficile...un po' a basso livello semmai) Per favore è abbastanza urgente... Provo a spiegarvela iniziando con un esempietto pratico pratico, considerate la stringa PEPE Ogni carattere è un char. Ho un puntatore chiamato yytext che può puntarmi ai vari char all'interno di questa stringa (cioè yytext può puntare alla prima P, alla prima E, alla seconda P ed alla seconda E dentro tale stringa) Poi ho un altro puntatore chiamato offset che anch'esso può puntare ai vari char della stringa. C'è un modo di sapere quanto è la differenza in byte tra i 2 puntatori per poter stabilire se sono adiacenti? Da quello che sò un char occupa 1 byte (correggetemi se sbaglio). In pratica usando questo metodo a basso livello posso stabilire se 2 caratteri all'interno della stringa sono adiacenti? In pratica a livello di codice ho questa semplicissima if: Codice:
if(*yytext != consonante){ /* Se la consonante attualmente riconosciuta e puntata da yytext è diversa dalla consonante precedente il cui valore è contenuto nella variabile consonante */
printf("%c", *yytext); /* Stampa sullo schermo la consonante riconosciuta. */
(yytext - offset) == 1 byte (almeno credo...o qualcosa del genere...) Qualcuno sà aiutarmi? Per favore è veramente molto urgente... Grazie mille Andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
se vuoi sapere quale è la dimensione di un char o di un puntatore
basta che esegui Codice PHP:
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2003
Messaggi: 76
|
Dato che avrai le tue ragioni per usare questo metodo un po' zozzo, considera questo:
- la dimensione di un puntatore dipende dall'architettura e dal compilatore, quindi l'unico modo furbo (senza fare assunzioni) per sapere a quanto ammonta è sizeof(char *), ma questo non ti interessa, perchè... - ...allocando la stringa dichiarando un array o con malloc() i singoli caratteri saranno in zone di memoria contigue, con indirizzi via via crescenti, quindi la distanza tra i due sarà sempre la dimensione di un carattere ovvero sizeof(char) quindi il tuo test dovrà essere: (yytext - offset) == sizeof(char) ovviamente yytext dovrà puntare a un carattere successivo a quello di offset |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:09.


















