Если кто захочет использовать этот исходник, предупреждаю: в нем заложена хорошая грабля.
Не зря умные люди предупреждают, что явное приведение типов - намек на непорядок в коде:
Код
int _printfs(FILE *fp, char *string, const char *format, va_list ap)
//сначала имеем казалось бы, невинное:
for(p = (char *)format; (*p && c != EOF); p++)
//а потом
if(*p == 'g')
{
*p = 'e';
} else {
*p = 'E';
}
} else {
*p = 'f';
Нетрудно понять, что для процов, которые хранят форматную строку во флеше этот код работать не будет, а для тех, которые копируют ее в ОЗУ (как х86) - будет работать только на первом проходе.