2014-11-13 3 views
1

У меня есть ниже функции в моем приложении:найти длину отформатированной строки в C

void func(char *file, int line) 
{ 
    char stmt[150]; 
    sprintf(stmt, "Failed in file %s, at line number %d", file, line); 
} 

Здесь я беру массив символов из 150 байт (грубое предположение), а мне нужно, чтобы найти длину из строку, которую я дал в sprintf(), и взять массив этого размера.

Pls предлагает мне, если такой объект в C, чтобы найти длину отформатированной строки. Спасибо!

+1

Если у вас нет верхней границы для длины 'файла', вам необходимо выделить необходимый объем памяти с помощью' malloc() '. –

+1

'int length = snprintf (NULL, 0," Ошибка в файле% s, номер строки% d ", файл, строка);' – BLUEPIXY

+0

Связанный: http://stackoverflow.com/questions/3774417/sprintf-with- автоматическое распределение памяти – abligh

ответ

3

Что относительно snprintf? Функция не записывает больше символов, чем заданное число, но возвращает длину строки, которую она создала бы, если бы у нее было достаточно места.

int len = snprintf(NULL, 0, "Failed in file %s, at line number %d", file, line); 
+0

@BLUEPIXY спасибо, исправлено –

+0

@BLUEPIXY спасибо – Srikanth