Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_СРСП_Программирование РЭС.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

7.2 Стандартные библиотечные функции над строками

Над строками определены следующие функции (таблица 21).

Таблица 21 – Функции над строками

Функция

Назначение

gets()

Данная функция получает строку от устройства ввода – клавиатуры. Поскольку строка не имеет заранее заданной длины, функция gets() должна знать, когда ей прекратить работу. Функция читает символы до тех пор, пока не встретится ей символ новой строки, который можно создать, нажав клавишу ENTER. Функция берет все символы до символа новой строки, присоединяет к ним нуль-символ и передает строку управляющей программе

puts()

Любая строка, выводимая этой функцией, начинается с новой строки. Если функция puts() находит завершающий нуль-символ, она заменяет его символом новой строки и затем выводит строку

strcat()

Использует в качестве аргументов две строки. Ее функция заключается в том, чтобы копию второй строки присоединить к концу первой. Это объединений становится новой первой строкой, а вторая строка остается без изменения

strcmp()

Использует в качестве аргументов либо две строковые константы, либо два указателя строк в качестве аргументов и возвращает значение 0, если строки одинаковы. Все остальные результаты объяснимы так: функция возвращает разницу между двумя символами в коде ASCII. Она продвигается вдоль строк до тех пор, пока не находят первую пару несовпадающих символов; затем она возвращает разницу в кодах.

strcopy()

Данная функция предназначена для копирования строки или адреса строки.

strlen()

Данная функция получает длину строки

strstr()

Функция сравнения строк

Пример 7.2 Сравнение строк

Напишем программу, запрашивающую пароль.

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char name[50];

char vvod[10], passw[]="d45gtr";

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

gets(name);

printf("Введите, %s, пароль\n", name);

gets(vvod);

if (strstr(vvod,passw))

printf ("Пароль принят");

else printf("Пароль не принят");

getch();

return 0;

}

В программе используется функция gets()– функция ввода строки и функция strstr(vvod,passw), которая сравнивает эталонный пароль d45gtr, содержащийся в массиве passw[] с паролем, введенным пользователем.

Задание 7.2

Выполните программу примера 7.2. Внесите в исходный код определение длины введенного пароля. Измените программу так, чтобы неверный ввод пароля мог быть выполнен не более трех раз и заканчивался сообщением "Превышено допустимое число ввода".

Задание 7.3

Проанализируйте коды следующих программ и определите результаты их выполнения.

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char a[25],b[5];

gets(a);

gets(b);

printf("%d\n",strcmp("a","a"));

printf("%d\n",strcmp("a","b"));

printf("%d\n",strcmp("b","a"));

getch();

return 0;

}

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char a[25],b[5];

gets(a);

gets(b);

strcat(a,b);

printf ("new string a=");

puts(a);

printf("string b=");

puts(b);

getch();

return 0;

}

Вопросы для самоконтроля:

  1. Что такое строка?

  2. Как прочитать строку? Напечатать строку?

  3. Как определить длину строки? Получить ее копию?

  4. Как сравнить две строки? Объединить две строки?