<pre id=code><font face=courier size= id=code>
#include <stdio.h>
#include <ctype.h>
#include <malloc.h>
void locase(char *str);
int main()
{
char a[] = "Im A sTRing";
char *b = NULL;
char *c = (char *)alloca(1024);
sprintf(c, "a = %s - b =%s\n", a, b);
locase(c);
// ...
}
void locase(char *str)
{
char *start = str;
while (*start)
{
*start = tolower(*start);
start++;
}
}
</font id=code></pre id=code>
Ho fatto alcune modifiche. In primo luogo, non è una buona idea di incrementare il puntatore *str nella funzione locase(). Poi mancava l'assegnamento della stringa a un buffer, almeno quel che ho capito io, l'ho chiamato *c. Comunque ora puoi anche fare locase(a) senza effetti collaterali, ed usare printf() o sprintf() dopo la conversione.
Se non usi VS6, alloca() potrebbe non funzionare, quindi si deve usare malloc() e dopo free(), per liberare la memoria.
Per la funzione locase conviene usare void, perché il puntatore in ingresso è lo stesso come in uscita, il codice risulta più leggibile e flessibile.
Giovanni
---
http://www.y2ksw.com/vbulletin