PDA

Visualizza la versione completa : [C]converisone da BYTE a char


mr.and
18-05-2009, 19:32
Salve,
sto implementando una applicazione sotto windows e mi ritrovo un problema che non so come risolvere:devo convertire un array di BYTE in una stringa.

ovvero:


char c[16]
BYTE b[15];
f(b) /*funzione che mi riempie b*/
for(i=0;i<15;i++) c[i]=b[i];
c[15]='\0';

Come posso fare?

oregon
18-05-2009, 19:51
Fai una domanda e proponi un codice ... quindi, qual e' il problema esattamente?

PeppePes88
18-05-2009, 22:39
char c[16]
BYTE b[15];
f(b) /*funzione che mi riempie b*/
for(i=0;i<15;i++) c[i]=b[i];
c[15]='\0';


Il codice che hai postato non è gia la soluzione???

Sei stato un po vago, posta la funzione f...

Comunque se ho capito il tuo problema si puo fare così:


#include <stdio.h>
typedef char byte;
int main () {

byte vet[4];
char stringa[5];
int i = 0;

vet[0] = 'c';
vet[1] = 'i';
vet[2] = 'a';
vet[3] = 'o';

for (i = 0; i <4 ; i++)
printf ("%c", vet[i]);

printf("\n");

for (i = 0; i<4; i++) stringa[i] = vet[i];

stringa[4] = '\0';

printf("%s\n", stringa);

return 0;
}

mr.and
19-05-2009, 09:15
La funzione f è la RegEnumValue() che richiede come 7imo valore un vettore di byte in cui andrà a memorizzare il dati relativi al valore della chiave del registro esaminata.
Il mio problema è che quando viene eseguita la riga di assegnazione tra l'elemento del vettore di byte e l'elemento della stringa(for(i=0;i<15;i++) c[i]=b[i];), il programma termina e mi appare la famosa finestra di windows "inviare e non inviare segnalazione errore".
Scusate se sono stato poco preciso ma sono giorni che sbatto la testa su questo programma e ad una certa ora incomincio a perdere di lucidità :confused: !

oregon
19-05-2009, 09:48
Un consiglio se hai un problema ... illustra il problema cosi' come ti si presenta e non porre un'altra questione.

PeppePes88
19-05-2009, 10:23
Il tipo byte è effetivamente un char???

Perchè a me sembra strano che l'errore sia li... Perchè è un normale assegnamento!!!
Hai usato il debbuger per vedere il punto in cui si interompeva???

mr.and
19-05-2009, 10:42
Scusate, ho risolto, il problema vero e proprio non era nell'assegnazione, ma nel modo in cui era stato dichiarato il vettore stringa in cui andava effettuata la copia.
Un errore banale, ma che non individuavo perchè guardavo in un'altra direzione.
Scusate ancora il disturbo, e grazie.Cmq per il futuro cercherò di seguire il consiglio di Oregon.

Loading