puts в C/C++: вывод строки на экран
Привет! В этой статье речь пойдет о функции puts
. Эта функция используется в C/C++ для записи строки в стандартный вывод (обычно просто вывод на экран). Сначала мы посмотрим на то, как использовать эту функцию. Потом, мы ра зберем несколько примеров, а в конце будут упражнения для закрепления материала самостоятельно.
Как вывести строку на экран в C/C++
Для вывода строки на экран можно воспользоваться функцией puts
. Эта функция становится доступна после подключения заголовочного файла <stdio.h>
. В C++ вы можете подключить <cstdio>
. Эта функция выглядит следующим образом:
int puts ( const char * str );
- Единственным аргументом эта функция принимает указатель на строку, которую нужно вывести на экран.
- Если произошла ошибка, функция возвращает
-1
. Иначе,puts
вернет положительное число (может вернуть любое).
Давайте посмотрим на пример:
#include <stdio.h>
int main() {
int n = puts("C puts");
printf("n = %d \n", n);
return 0;
}
Вывод программы:
C puts
10
Важный момент: puts
добавляет символ новой строки '\n'
к концу вывода. Поэтому нам не нужно добавлять его самим:
puts("AB");
puts("CD");
Выведет:
AB
CD
В этом плане puts
отличается от printf
, который не переносит строку автоматически:
printf("AB");
printf("CD");
Вывод:
ABCD
Какой будет вывод следующей программы?
#include <stdio.h>
int main() {
puts("Hello ");
printf("World");
puts("!");
return 0;
}
World!
!
World
!
Вывод строки на экран с помощью printf
Если нам нужно вывести строку на экран без символа новой строки, то у нас есть два варианта. Первый мы уже видели, можно просто воспользоваться функцией printf
в случае с простой строкой. Но что, если в строке есть проценты:
printf("100%");
В этом случае, printf
выведет не то, что нам нужно. Чтобы быть уверенным, что
строка будет выведена как она есть, мы можем использовать спецификатор формат а %s
:
printf("%s", "100%");
В этом случае printf
выведет строку на экран даже с процентами. Если вам не нравится решение с printf
, то не беда. Мы можем воспользоваться другой функцией.
fputs для вывода на экран
Функция fputs
является аналогом puts
для вывода в файл. Однако, передав stdout
в качестве файла для записи, мы можем заставить её выводить информацию на экран:
fputs("AB", stdout);
fputs("CD", stdout);
Вывод:
ABCD
Как вы можете видеть, fputs
не добавляет символ переноса строки в конец вывода.
Вы можете использовать fputs
вместо любого вызова puts
передав stdout
в качестве файла для вывода и добавив '\n'
в конец выводимой строки:
fputs("fputs vs puts\n", stdout);
// тоже самое
puts("fputs vs puts");
Реализация puts
Давайте попробуем реализовать свою версию функции puts
, чтобы лучше понять как она работает:
#include <stdio.h>
int my_puts(const char* s) {
while (*s != '\0') {
int result = putchar(*s);
if (result < 0) {
return result;
}
s++;
}
return putchar('\n');
}
int main() {
my_puts("AB");
my_puts("CD");
return 0;
}
Вывод:
AB
CD
Тут вы уже можете поменять логику как хотите. Можете выводить, можете не выводить '\n'
в конце. Все зависит от ваших предпочтений.
Упражнения
-
Использование функции
puts
:- Напишите программу на языке C, которая использует функцию
puts
для вывода на экран фразы “Привет, мир!“. - Добавьте в вашу программу функцию
printf
для вывода этой же фразы. Сравните результаты. - Обратите внимание на то, как функции выводят текст на экран. В чем разница?
- Напишите программу на языке C, которая использует функцию
-
Эксперименты с функцией
fputs
:- Напишите программу, которая использует
fputs
для вывода на экран двух строк: “Hello” и “World”, так чтобы они были на одной строке. - Затем используйте
puts
для того же самого. Обратите внимание на различие в выводе.
- Напишите программу, которая использует
-
Создание своей версии
puts
:- Попробуйте реализовать свою версию функции
puts
, назвав ееmy_puts
. Ваша функция должна принимать строку в качестве аргумента и выводить ее на экран, добавляя символ новой строки. - Продемонстрируйте работу вашей функции на примере вывода фразы “Это моя версия функции puts!“.
- Попробуйте реализовать свою версию функции
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение