Урок 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();
}
рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов