C - не выводится после snprintf

Я делаю свои первые шаги с C (указатели, указатель-указатель и т. Д., Мне это нравится), так что помилуйте, если это глупый вопрос.

Этот фрагмент ничего не выводит:

char buf[256];
snprintf(buf, sizeof buf, "output: %s%s%s");

puts("test");

И этот фрагмент выводит "тест" (как и ожидалось):

char buf[256];
snprintf(buf, sizeof buf, "output: %s%s");

puts("test");

=>test

Вопрос: Какую роль здесь играет snprintf? Есть ли какая-либо связь с оператором put или почему в первом коде нет эффекта / вывода put?

1 ответ

Решение

Так как snprintf(buf, sizeof buf, "output: %s%s%s"); требуется 3 параметра:

snprintf(buf, sizeof buf, "output: %s%s%s", str1, str2, str3);

а также snprintf(buf, sizeof buf, "output: %s%s"); требуется 2 параметра:

snprintf(buf, sizeof buf, "output: %s%s", str1, str2);

если вы не передаете параметры в функцию snprintf, это не значит, что snprintf не будет пытаться получить к ним доступ. Таким образом, вы видите результат ошибки сегментации, вызванный snprintf, пытающимся получить доступ к параметру "str3", который не существует.

Другие вопросы по тегам