ШПОРЫ ИНФА. Обработка строковых данных
Скачать 55.83 Kb.
|
8) Обработка строковых данных К любому символу строки можно обратиться как к элементу одномерного массива, например, запись st[i] определяет i-ый символ в строке st. Поэтому при решении некоторых задач обработку строковых данных можно проводить посимвольно, организуя циклы для просмотра строки. Например: Дано предложение. Определить количество слов в нем. Решение: Слова в предложении разделяются пробелами. Подсчитав количество пробелов, можно определить количество слов, учитывая, что между словами введен только один пробел. #include "stdafx.h" #include printf("Введите предложение\n"); gets(slova); n= strlen(slova); // функция strlen() возвращает длину строки for(i=0;i if(slova[i]==' ')k++; //поиск и подсчет пробела printf("k=%d\n",k); return 0; } Стандартные функции обработки строк Большинство действий над строками реализуется с помощью стандартных функций, унаследованных от языка С и описанных в заголовочном файле string.h. Рассмотрим некоторые из них. Сравнение строк: strcmp(str1,str2) – сравнивает две строки str1 и str2 и возвращает 0, если они одинаковы; результат отрицателен, если str1 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[17]= " -студент СИБГУТИ "; strcat(fam ,pr); printf("|%32s|", fam); на экран будет выведена строка: |Андреев С.В. -студент СИБГУТИ | Поиск символа в стоке strchr(st, ch) - функция поиска адреса символа ch в строке st. Результатом выполнения поиска является адрес найденного символа в строке st, иначе возвращается нулевой адрес. Чтобы вычислить порядковый номер символа ch в строке, можно из найденного адреса вычесть адрес начала строки. Пример.В заданной фамилии определить порядковый номер символа ‗n‘. #include "stdafx.h" #include { char fam[] = "Ivanov";//задание фамилии char faml[20]; char a='n';// искомый символ char *p; p=strchr(fam,a);//поиск символа в фамилии if(p) printf("|%s|%d\n", fam, p-fam);/*вывод фамилии и порядкового номера символа n в ней */ else printf("нет такого символа в фамилии!\n"); return 0; } Исходным текстом является предложение, заканчивающееся точкой. Слова в предложении отделяются друг от друга одним пробелом. Определить самое длинное слово в предложении. #include "stdafx.h" #include { char slovo[12],X[120]; // описание массивов для предложений int i,m=0,n,k=0,dl; gets(X); // ввод исходного предложения в X dl= strlen(X);// определяем длину введенного предложения for(i=0; i { if (k>m) //поиск мах значения счетчика к { m=k; // запоминаем длину текущего длинного слова n=i; // запоминаем номер пробела, идущего за длинным словом } k=0; //обнуляем счетчик для нового слова предложения Х } k=0; for(i=n-m;i slovo[k++]=X[i]; slovo[k]=0; //ставим в массиве slovo признак конца текста printf("%s\n",slovo); //вывод найденного длинного слова printf("%d\n",strlen(slovo));//вывод его длины return 0; } 9) Файлы данных - это бинарные файлы,понятные компьютеру.Когда мы говорим о бинарных данных, тип char выступает в роли типа byte,В С++ нет типа byte, а вместо типа byte используют тип char. Согласно правилам языка С++, тип char оказывается наименьшей единицей информации. Из-за этого восприятие нами ситуации в целом немного искажается, ведь мы видим char*, а на самом деле это как byte* Файл – это информация, размещенная на каком-либо носителе (диске) или в буфере ввода/вывода устройства (клавиатура). Файлы предназначены только для хранения информации, а обработка этой информации осуществляется программами.Открытие файла - fl=fopen("путь к файлу","режим работы файла"); Параметр "путь к файлу" указывает размещение файла на диске. Он обязательно содержит имя файла и может содержать имя логического диска и путь к нему по папкам. Параметр "режим работы файла"показывает, как будет использоваться файл: "w" – для записи данных (вывод); "r" – для чтения данных (ввод); "a" – для добавления данных к существующим записям. Закрытие файла - После завершения обработки файла его следует закрыть с помощью функции fclose(). При этом разрывается связь указателя на файл c внешним набором данных. Освободившийся указатель можно использовать для другого файла. Основные функции работы с открытым файлом - (ввод) fgetc() (вывод) fputc(), fscanf() - fprintf(),fgets()-fputs(), fread() - fwrite() 10) Вывод на консоль - Для вывода на консоль применяется оператор <<. Этот оператор получает два операнда. Левый операнд представляет объект типа ostream, в данном случае объект cout. А правый операнд - значение, которое надо вывести на консоль. Также цепочку операторов << можно завершать значением std::endl, которое вызывает перевод на новую строку и сброс буфера. При выводе в поток данные вначале помещаются в буфер. И сброс буфера гарантирует, что все переданные для вывода на консоль данные немедлено будут выведены на консоль.Ввод с консоли - Для считывания с консоли данных применяется оператор ввода >>, который принимает два операнда. Левый операнд представляет объект типа istream (в данном случае объект cin), с которого производится считывание, а правый операнд - объект, в который считываются данные.Форматный вывод - Форматный вывод числовых результатов на стандартное устройство вывода (stdout), которым по умолчанию является экран дисплея, осуществляется с помощью функции printf. 11) |