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", который не существует.