Почему gcc -Wall выдает предупреждение о строке формата нулевой длины?

Я немного поискал информацию по этому поводу, но не нашел ничего удовлетворительного. Есть ли какое-то особое поведение вызова функции

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'

, что я и ожидал увидеть. Итак, почему предупреждение?

21
задан SirGuy 1 March 2015 в 02:27
поделиться