C запись в строку (задается конкретная функция)
Я в некотором роде в затруднении с поиском одной конкретной функции с возвращаемым типом int, который изменяет значения массива char (string), принимая ровно 5 параметров, в то время как функция не должна быть импортирована из любой другой библиотеки, за исключением stdio.h
, возможно.
Источник выглядит следующим образом:
#include <stdio.h>
int main() {
char buffer [50];
int n;
n= // some function here ;
printf("%s",buffer,n);
return 0;
}
Я изучал многие функции, но ни одна из них, о которой я знал или нашел, не соответствует вышеуказанному требованию, так что я был бы признателен за помощь более знающих людей. сейчас. Заранее спасибо.
2 ответа:
Вы должны перейти к функциям со списками переменных аргументов. Двумя такими в
stdio.h
являются:Примечание: эти функции точно не принимают пять аргументов, как вы указали в своем вопросе. Они принимают минимальное количество аргументов (2 и 3 соответственно), но могут выходить далеко за пределы 5 аргументов.int sprintf(char * restrict s, const char * restrict format, ...); int snprintf(char * restrict s, size_t n, const char * restrict format, ...);
Который изменяет значения массива символов (string)
Следующее делает то, что вы хотите, чтобы char массив (
info
):char info[60]; char name[] = "Christopher Westburry"; char designation[] = "Learner"; int reputation = 72; sprintf(info, "Welcome %s to StackOverflow!\nDesignation: %s\nReputation: %d", name, designation, reputation); printf("%s", info);
Просматривая приложение B стандарта C , я не вижу ничего, что занимает Вот именно 5 Аргументы и возвращает
int
.OTOH
stdio.h
полон функций, которые возвращаютint
и принимаютпеременную число аргументов в семействеscanf
иprintf
. Один раз можно что-то придумать. Посколькуbuffer
неинициализирован, и код хочет его напечатать, предположительно мы собираемся что-то прочитать в нем изstdin
. Это, вероятно, означает, что некоторые надуманныеscanf
вызов.Если это тот ответ, которого они ожидают, то это упражнение довольно бессмысленно. Обратите внимание, что#include <stdio.h> int main() { char buffer [50]; int n; // Same as // n = scanf("%40s", buffer); n = scanf( "%10s%10s%10s%10s", buffer, &buffer[10], &buffer[20], &buffer[30] ); // printf("%s",buffer,n); printf("'%s' %d\n",buffer,n); return 0; }
printf
в исходном коде имеет ошибку, когда он передается в слишком большом количестве аргументов. Может быть, это ключ, и это должно быть какое-то умное использование неопределенного поведения?