Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Копирование строк




Определение длины строки

Сцепление строк

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

Обработка строковых данных

К любому символу строки можно обратиться как к элементу одномерногомассива, например, запись st[i] определяет i-ый символ в строке st. Поэтому при решении некоторых задач обработку строковых данных можно проводить посимвольно, организуя циклы для просмотра строки.

Например: Дано предложение. Определите количество слов в нем.

Решение:

Слова в предложении разделяются пробелами. Подсчитав количество пробелов, можно определить количество слов, учитывая, что между словами введен только один пробел.

#include "stdafx.h"

#include<string.h>

int main()

{ char slova[120];

int i, n, k=1;

printf("Введите предложение\n");

gets(slova);

n= strlen(slova); // функция strlen() возвращает длину строки

for(i=0;i<n; i++)

if(slova[i]==' ')k++; //поиск и подсчет пробела

printf("k=%d\n",k);

return 0;

}

Большинство действий над строками реализуется с помощью стандартных функций. Библиотека языка Си содержит большое количество таких функций, прототипы которых определяются в заголовочном файле string.h. Рассмотрим некоторые из них.

Сравнение строк:

strcmp(str1,str2) – сравнивает две строки str1 и str2 и возвращает 0, если они одинаковы; результат отрицателен, если str1<str2 и положителен, если str1>str2.

strncmp(str1, str2, kol) – сравниваются части строк str1 и str2 из kol символов. Результат равен 0, если они одинаковы.

Сравнение двух строк выполняется последовательно слева неправо с учетом кодировки символов. Например, сравнивая стоки st1 и st2

char st1[10]="Пример";

char st2[10]="ПPимер";

int a;

if (strcmp(st1,st2)>0)

a=1;

else

a=2;

переменной а будет присвоено значение 1, так как код символа 'р' больше кода символа 'Р'.

strcat(str1,str2) - сцепление строк в порядке их перечисления.

strncat(str1,str2,kol) – приписывает kol символов строки str2 к строке str1.

Функция служит для объединения двух строк в одну. Например, в результате выполнения операторов:

char fam[] = "Андреева С.В. ";

char pr[7]= " "; //7 пробелов

strcat(fam,pr);

printf(“|%20s|”, fam);

на экран выведется строка:

|Андреева С.В. |

Заметим, что строка вывода занимает поле в 20 позиций, а переменная fam располагается в левой части поля.

strlen(str) – определяет длину строки str.

Пример.Определить длину строки

charfam[] = "Андреева С.В.";

printf("%d",strlen(fam));

функция strlen() вернёт значение равное 13 (символов).

strcpy (str1,str2) – копирует строку str2 в строку str1.

strncpy (str1, str2, kol) – копирует kol символов строки str2 в строку str1.

 

Пример. Скопировать фамилию сотрудника в переменную fam и вывести на экран.

#include "stdafx.h"

#include<string.h>

int main()

{ char fam[15];

char *str = " Андреева С.В.";

strcpy(fam, str);

printf("|%s|\n", fam);

return 0;

}

 

В результате выполнения данных операторов на экран будет выведена строка:

|Андреева С.В.|




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.