Я немного поискал информацию по этому поводу, но не нашел ничего удовлетворительного. Есть ли какое-то особое поведение вызова функции
sprintf(someString, "");
, которое объясняет, почему это предупреждение (в gcc с -Wall)? Мне только удалось обнаружить, что стандарт C допускает строки формата нулевой длины.
Я попробовал следующий пример
#include <stdio.h>
int main()
{
char str[2] = {'a', 'a'};
sprintf(str, "");
printf("\'%c\'\'%c\'\n", str[0], str[1]);
return 0;
}
, который выводит
'''a'
, что я и ожидал увидеть. Итак, почему предупреждение?