Линия
for ( i = 0; i < (c + 1); i++)
должно быть
for ( i = 0; i < (c - 1); i++)
И тогда вам нужно до strdup
new [i] = 0;
Брекеты тоже не помешают.
EDIT
Забыл, нужно изменить следующее
int i, j=0;
и в цикле for
new[j++] = toupper(s[i]);
и после цикла for
new[j] = 0;