Символьные массивы – строки. Функции для работы с текстом. Двумерные массивы – матрицы, страница 2

21.  Из строки исключить первое слово.

22.  Подсчитать в строке количество символов не цифр.

Пример 3а. В строке поменять местами имена без использования библиотечных функций.

#include<stdio.h>

#define L 80

void main()

{

 char Name [] = {"Ruslan Ludmila"}, Newname[L];

 int i, j, k= 0;

 puts("Сначала:");

 puts (Name);

 for (i=0;   Name[i] != ' '; i++);  // находим пробел 

 // переписываем второе имя

 for (j=i+1; Name[j] != '\0'; j++, k++)         Newname[k] = Name[j];

 // добавляем пробел

 Newname [k++] = ' ';

 // переписываем первое имя

 for (j=0; j < i; j++, k++) Newname[k] = Name[j];

 Newname [k] = '\0';

 puts("Результат:");

 puts(Newname);

}

Пример 3б. В строке поменять местами имена, используя библиотечные функции.

#include<stdio.h>

#include<string.h>

#define L 80

void main()

{

 char Name[] = {"Ruslan Ludmila"}, Newname[L];

 char *p;

 puts ("Сначала:");

 puts (Name);

 p = strchr (Name,' ');         //находим пробел

 *p = '\0';

 strcpy (Newname, p+1);    // переписываем второе имя

 strcat(Newname, " ");                // добавляем пробел

 strcat (Newname, Name);  // переписываем первое имя

 puts("Результат:");

 puts(Newname);

}

Функции для работы с текстом

ch = getch ();     считывает один символ с клавиатуры без отображения на экране.

ch = getchar ();  считывает символ из стандартного входного файла (stdin) с отображением его на экране.

putchar (ch);       записывает символ в стандартный файл вывода (stdout).

isalnum (ch);       возвращает ненулевое значение, если ch – код буквы или цифры.

isalpha (ch);        возвращает ненулевое значение, если ch – код буквы.

isdigit (ch);          возвращает ненулевое значение, если ch – код цифры (0…9).

tolower (ch);       преобразует код буквы ch к нижнему регистру.

toupper (ch);      преобразует код буквы ch к верхнему регистру.

gets (Str);            считывает строку из стандартного входного файла (stdin).

puts (Str);            записывает строку в стандартный файл вывода (stdout).

strcat (Str1, Str2);      приписывает строку Str2 к строке Str1.

strchr (Str, ch);          ищет в строке Str первое вхождение символа ch.

strcmp (Str1, Str2);    сравнивает строки. Результат < 0, если Str1 < Str2;

равен 0, если строки равны и  > 0, если Str1 > Str2.

strcpy (Str1, Str2);      копирует байты строки Str2 в строку Str1.

strdup (Str);              выделяет память и копирует в неё строку Str.

strlen (Str);               вычисляет длину строки.

strrev (Str);               записывает строку наоборот.

strset (Str1, ch);         заполняет строку Str заданным символом ch.

strstr (Str, SubStr);     ищет в строке Str  подстроку SubStr.

strlwr (Str);               преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра.

strupr (Str);               преобразует буквы нижнего регистра в строке в соответствующие буквы верхнего регистра.

strpbrk (Str, SubStr);  ищет в строке Str  первое появление любого символа из подстроки SubStr.

Пример 4а. Написать программу, которая отображает встречаемые в строке символы с частотой появления каждого из них (без использования библиотечных функций).

#define L 80

void main()

{

 char s[L];

 int i, j, count=1;

 puts ("\n Enter string:");

 gets (s);

 for(i = 0; s[i] != '\0'; i++)

  {

   for (j=i-1; j>=0; j--) if (s[i]==s[j])break; // если символ встречался раньше

   if (j<0)  

{ // если первое вхождение символа, то считаем число повторений