История изменений
Исправление beastie, (текущая версия) :
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
int
snscanf(const char *str, size_t len, const char *format, ...)
{
int ret;
char *p;
va_list ap;
if (strlen(str) < len)
return 0;
p = strdup(str);
if (!p)
return -1;
p[len + 1] = '\0';
va_start(ap, format);
ret = vsscanf(p, format, ap);
va_end(ap);
free(p);
return ret;
}
PS: не там ты IMHO проблемы ищешь.
Исходная версия beastie, :
int
snscanf(const char *str, size_t len, const char *format, ...)
{
int ret;
char *p;
va_list ap;
if (strlen(str) < len)
return 0;
p = strdup(str);
if (!p)
return -1;
p[len + 1] = '\0';
va_start(ap, format);
ret = vsscanf(p, format, ap);
va_end(ap);
free(p);
return ret;
}
PS: не там ты IMHO проблемы ищешь.