Урок 6.4. Ввод – вывод строк
Ввод строки можно осуществлять при помощи функции gets():
gets(<указатель на строку>); |
Функция получает строку от стандартного устройства ввода – клавиатуры. Поскольку строка не имеет заранее заданной длины, функция gets() читает символы до тех пор пока не встретит символ новой строки, который посылается в буфер при нажатии клавиши Ввод.
Функция записывает в строку все символы до символа новой строки (не включая его) и добавляет к ним нуль-символ, который завершает строку. В отличие от функции scanf() пробелы не являются разделителями при вводе, поэтому при помощи функции gets() можно вводить предложения, в которых слова разделены пробелами.
Например:
char name[81]; gets (name); char *s; //необходимо позаботиться, чтобы s указывала на //какую-то определенную область памяти; //выделяем память: s = new char[22]; gets(s); |
Вывод строк можно осуществить при помощи функции puts():
puts(<указатель на строку>); |
Функция последовательно выводит символы, начиная с того, на который указывает <указатель на строку> и заканчивает работу, если встретился нуль-символ.
Например:
char text[] = “Строка символов”; puts(“Вот строка:”); puts(text); |
Далее приведем пример программы иллюстрирующий правильный и безопасный ввод строк.
#include <conio.h> #include <stdio.h> #include <string.h> void main() { //неправильный ввод строк c1 и s1 не инициализированы //т.е. память под строки не выделена, будет выдано сообщение об ОШИБКЕ! char *s1; printf("Enter the text, please:\n"); gets(s1); puts(s1); //правильно, но небезопасно, //пользователь может ввести более 199 символа, //а место есть только для 199 + нуль-символ char s[200]; printf("Enter the text <=199 characters, please:\n"); gets(s); puts(s); //такой же самый пример, но с динамическим //выделением памяти для трех строк char *d[3]; for(int i = 0; i < 3; i++) { d[i] = new char[10]; printf("Enter the text <=9 characters, please:\n"); gets(d[i]); } for(int i = 0; i < 3; i++) { printf("\n"); puts(d[i]); } char m[3][10]; for(int i = 0; i < 3; i++) { printf("Enter the text <=9 characters, please:\n"); gets(m[i]); } for(int i = 0; i < 3; i++) { printf("\n"); puts(m[i]); } //надежный ввод строки функцией fgets() //указывается размер буфера, «лишние» //символы будут отброшены //fgets(buffer, sizeof(buffer), stdin); //stdin – стандартное устройство ввода char sf[10]; fputs("Enter the string : ", stdout); fgets(sf, sizeof(sf), stdin); fputs("String : ", stdout); fputs(sf, stdout); printf("\nКонец примера\n"); getch(); } |
Оставить комментарий