Non ho dato un'occhiata approfondita ma ho visto che usi la funzione

strlen

senza avere inizializzato in alcun modo la stringa b

Dato che il contenuto di una variabile non inizializzata in C è casuale, altrettanto sarà per il valore restituito dalla strlen.