2009-09-03 4 views
-1

Как работает fprintf?Как работает fprintf на C++?

Если я пишу fprintf(outfile, "test %d %d 255/r", 255, 255);

Что это значит? Я знаю, что outfile - это имя моего выходного файла. Что означают другие значения?

+5

Вы также должны задать вопрос о своем знании первого параметра. «outfile» в ** не ** * имя * вашего выходного файла. – innaM

+6

Это печально, первый результат поиска «fprintf» google рассказал бы вам все об этом. – DaClown

+7

Правда, но теперь * это * обсуждение имеет шанс появиться в Google для следующего человека. Возьмите это нахмурившись и переверните его вверх дном. –

ответ

6

"test %d %d 255/r" сообщает, что после него будут аргументы (и они есть: 255, 255), и ожидается, что они будут иметь целочисленный тип. И они будут помещены вместо% d.

В результате вы получите строку test 255 255 255 в своем файле.

Для дополнительной информации читайте std::fprintf reference.

1

Он похож на printf, он просто печатает вывод в файл.

3

Первый параметр - это дескриптор файла, второй - строка форматирования, после чего существует переменное количество аргументов в зависимости от того, сколько спецификаторов формата вы использовали во втором параметре.

Проверьте documentation, он содержит всю информацию, которую вы запрашиваете.

1

Второй аргумент - это строка формата. Любые дополнительные аргументы являются параметрами спецификатора в строке формата (в данном случае,% d). Проверьте http://www.cppreference.com/wiki/c/io/printf за хорошее введение в функции printf.

3

Это отформатированный вывод в поток файлов. Он работает как Printf делает, разница в том, что Printf всегда выводит на stdout.If Вы писали

fprintf(stdout, "test %d %d 255\n", 255, 255); 

было бы таким же, как printf эквивалент.

Второй аргумент - строка формата. Строка формата содержит спецификаторы формата, такие как %s, %d, %x. Ваш содержит два %d s. Каждый спецификатор формата должен иметь соответствующий аргумент в fprintf. С уважением имеет два %d спецификаторов, таким образом, есть два числовые аргумент:

fprintf(outfile, "Here are two numbers: %d, %d", 4, 5); 

также, вы можете использовать строковые описатели (%s), шестнадцатеричные спецификатор (%x) или длинный/длинный длинные Int спецификатор (%ld, %lld). Вот список из них: http://www.cppreference.com/wiki/c/io/printf. Обратите внимание, что они одинаковы для всех функций ввода-вывода с форматированием (например, sprintf и scanf).

Кроме того, в вашем первоначальном примере «/r» будет буквально печатать «/r». Похоже, вы пытались сделать возврат каретки («\r»).

Смежные вопросы