Студопедия

Главная страница Случайная лекция

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика






Символьный массив («Строка»)

Читайте также:
  1. V. АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД И МАССИВОВ. ОСНОВНЫЕ ФАКТОРЫ, ВЛИЯЮЩИЕ НА АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД
  2. Борьба с трещинообразованием в массивных бетонных сооружениях.
  3. Воздействия на горные породы и их массивы
  4. Двумерный массив целых чисел («Матрица»)
  5. ДЕ №3 / Оценка устойчивости склонов, откосов и массивных подпорных стенок
  6. Заложение скважин на массивных залежах
  7. Массив строк («Страница»)
  8. Массив целых чисел («Вектор»)
  9. ОПИСАНИЕ массива
  10. Основные механические модели массива горных пород и краткая их характеристика

Строка является последовательностью символов с ассоциированной длиной. Строковая структура может иметь NULL – символ или отдельный параметр длины.

Способы определения строк:

- массив типа char char A[] = { 'С','т','р','о','к','а','1','\0' };

- массив типа char char B[] = “строка 2”;

- указатель на тип char char *C = “строка 3”;

- указатель на тип char char *D = {“строка 4”};

- указатель на тип char char *E (“строка 5”);

- массив указателей на строки char *text[] = {“String 1”, “ String 2”};

Библиотечные функции для работы с текстом:

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.

Набор функций для работы с символьным массивом:

1. Введенное натуральное число записать в виде строки.

void Long_to_String (long number, char string[])

{

int i = 0;

while(number != 0)

{ string [i] = '0' + (number % 10); number /= 10; i ++; }

string [i] = '\0';

strrev (string);

}

2. Разбить дробную часть числа слева направо по три цифры.

char *Real_to_String (long double t)

{

char *string = new char[L], *p, temp[L];

long k = t;

int i = 0, Len, n;

Long_to_String (k, string); strcat (string, ".");

t = t – k;

do { k = t * 10; t *=10; temp [i] = (k%10) + '0'; i++;

} while ((i < 10)&&((t-k)>0.000001));

temp[i] = '\0';

Len = strlen (temp);

n = Len / 3;

if ((Len % 3) == 0) n--;

for (i = 0, p = temp; i < n; i++, p += 3 )

{ strncat (string, p, 3); strcat (string, ",");}

strcat (string, p);

return string;

}

3. Исключить дублирование символов в строке.

void Delete_Double (char string[])

{

int i, j, k;



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

{ j = i+1;

while (string [j] != '\0')

if (string [i] == string [j])

{ for (k = j; string [k] != '\0'; k++) string [k] = string [k+1];

string [k]='\0';

}

else j++;

}

}

4. Вывести количество вхождений каждого символа в строку.

void Statistic (char *Str)

{

int count = 0, i, j, key;

puts("\t Symbol \t Counter");

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

{ key = 0;

for (j = i - 1; j >= 0; j --)

if (Str[i] == Str[j]) { key = 1; break;}

if (key == 0)

{ for (j = i; Str[j] != '\0'; j ++)

if (Str[i] == Str[j]) count ++;

printf ("\t %c \t %d \n", Str[i], count);

count = 0;

}

}

}

5. Заменить в строке все точки многоточием.

char* Three_Points (char *Str)

{

char Temp[N];

int i, j = 0, k;

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

if (Str[i] != '.') Temp [ j ++] = Str[i];

else for (k = 0; k < 3; k ++) Temp [ j++] = '.';

strcpy (Str, Temp);

return Str;

}

6. Удалить заданную подстроку из строки (без использования библиотечных функций).

char* Delete_Subset ( char* Str, char* Subset)

{

int i = 0, j, k, length = strlen (Subset);

while (Str [i] != '\0')

if (Str [i] == Subset [0])

{ k = i;

for (j = 1; j < length; j++) if ( Str [i + j] != Subset [j]) break;

if (j == length)

{ for (j = k; Str [ j + length] != '\0'; j++)

Str [j] = Str [ j + length];

Str [j] = '\0';

}

else i ++;

}

else i ++;

return Str;

}

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

void Change_Names()

{

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);

}


<== предыдущая страница | следующая страница ==>
Массив целых чисел («Вектор») | Двумерный массив целых чисел («Матрица»)

Дата добавления: 2014-11-14; просмотров: 229; Нарушение авторских прав


lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.