Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Методичка(часть 1) программирование.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
203.26 Кб
Скачать

Функция gets()

Эта функция удобна для диалоговых систем. Функция gets() обеспечивает ввод строки со стандартного устройства ввода, которым обычно является клавиатура. Она читает символы до тех пор, пока не будет введен символ новой строки ('\n'), который создается в результате нажатия клавиши "ВВОД". Функция берет все символы до символа новой строки, присоединяет к ним нуль-символ и передает вызывающей программе.

main()

{ char name[81]; /*выделение памяти*/

printf("ВВедите имя \n");

gets(name);

printf("Ваше имя - %s\n", name);

}

В качестве аргумента функция gets() использует указатель на массив. Функция примет любое имя, включая пробелы, длиной до 80 символов + нуль-символ.

Функция scanf()

Основное различие между scanf() u gets() заключается в том, как они определяют, что достигли конца строки. Функция scanf() предназначена скорее для получения слова, а не строки. Она имеет два варианта, для любого из которых строка начинается с первого встретившегося непустого символа. Если используется формат %s, строка продолжается до следующего пустого символа (пробел, табуляция, новая строка). Если размер поля определен как %10s, то функция scanf() считает 10 символов или менее 10 символов, если ранее будет встречен пустой символ.

Функция scanf() возвращает целое значение, равное числу считанных символов, если ввод прошел успешно, или символ EOF, если он встретился при вводе. Вот пример использования этой функции:

main()

{ static char name1[40], name2[7];

int count;

printf("Введите два имени\n");

count=scanf("%s %7s", name1,name2);

printf(" Введено имен %d. Первое имя %s, второе имя %s\n", соunt,name1,name2);

}

Если ввести два имени Иван и Владислав, то программа выдаст:

Введено имен 2. Первое Иван, второе Владисл.

Функция puts()

Функция имеет один аргумент, являющийся указателем строки.

#include <stdio.h>

#define DEF " Строка"

main()

{ static char str1[]="Массив инициализирован";

static char *str2="Указатель массива инициализирован";

puts("Аргумент функции puts().");

puts(DEF);

puts(str1);

puts(str2);

puts(&str1[4]);

puts(str2+4);

}

РЕЗУЛЬТАТ: Аргумент функции puts().

Строка

Массив инициализирован

Указатель массива инициализирован

ив инициализирован

атель массива инициализирован

Фразы в кавычках и имена символьных массивов являются указателями.

Указатель &str1[4] ссылается на 5 элемент массива. Этот элемент содержит символ 'и' и функция puts() использует его в качестве начальной точки. Аналогично str2+4 ссылается на ячейку памяти, содержащую символ 'а' в указателе и с нее начинается вывод строки.

Если функция puts() встречает завершающий символ \0, она заменяет его символом новая строка. Поэтому каждая фраза нашей программы начинается с новой строки.

Функции, работающие со строками Функция strcat() - string catenation

Данная функция служит для объединения двух строк. Ее работу иллюстрирует пример:

#include <stdio.h>

#include <string.h>

#define SIZE 80

main()

{ static char student[]=" Я студент";

static char vuz[10];

printf("В каком ВУЗе вы учитесь?\n");

gets(vuz);

strcat(student,vuz);

puts(student);

}

Копия второй строки присоединяется к концу первой и это объединение становится новой первой строкой. Вторая строка не изменяется.

В каком ВУЗе вы учитесь?

МАТИ.

Я студент МАТИ.

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

gets(vuz);

if(strlen(student)+strlen(vuz)+1)< SIZE

strcat(student,vuz);

puts(student);