Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Символьный массив («Строка»)Строка является последовательностью символов с ассоциированной длиной. Строковая структура может иметь 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; просмотров: 273; Нарушение авторских прав Мы поможем в написании ваших работ! |