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-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение