Я немного искал информацию об этом, но не нашел ничего удовлетворительного.Есть ли какое-то особое поведение в вызове функции
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'
, которыйименно то, что я ожидал увидеть.Итак, почему предупреждение?