ciao
Ma perché hai usato quel cast con l'strlen
si in quel caso il cast è inutile sorry
e anche un puntatore apparentemente inutile (astr è uguale a p)?
p si muove, invece astr punta sempre al primo char così posso restituirlo correttamente.
Comunque quello che dici è vero e p è effettivametne inutile.
Cambia così
[dato che non mi ERO capito bene
ho cambiato la return che era sbagliata]
Codice: Seleziona tutto
char* ConvertBinToAscii(char *bstr)
{
int count=0;
char *astr=NULL;
int i=0;
count=(int)(strlen(bstr)/8);
astr=malloc(count+1);
memset(astr,0,count+1);
for(i=0; i<strlen(bstr); ++i) astr[i/8] |= ( (bstr[i]-'0') << (7-(i%8)));
return astr;
}
non l'ho provato ma forse funge.
Come mai li hai subito inizializzati i puntatori e le variabili?
per non rischiare di perdere i capelli in ore e ore di debugging
A parte gli scherzi è sempre meglio inizializzare tutto dopo la dichiarazione.
Ti ho scritto un piccolo esempio per farti venire la voglia di inizializzazione
Codice: Seleziona tutto
#include <stdio.h>
void cattivo()
{
int a;
if(a==5)
{
printf("smuahuahauahua\n");
}
else
{
printf("hello!\n");
a=5;
}
}
int main()
{
printf("chiamo cattivo la prima volta\n");
cattivo();
printf("chiamo cattivo la seconda volta\n");
cattivo();
return 0;
}
vai col liscio :P
ciao
Gio