Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Gets(имя строковой переменной);Содержание книги Поиск на нашем сайте Функция читает символы из строки ввода до тех пор, пока не встретит символ новой строки ‘\n’, который создается нажатием клавиши <ввод>. К прочитанным символам (без ’\n’) присоединяется нуль-символ ‘\0’ и полученное значение присваивается соответствующей переменной-строке.
Вывод строки символов на экран: printf(″ Вы ввели %s″, S); Функция puts(имя строковой переменной); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n). Аналогом такой функции будет: printf(“%s \n”,имя строковой переменной); Пример: Ввести строку. Посчитать в ней все буквы «а». #include<stdio.h> #include<string.h> main() {char s[20]; int i,k=0; puts("введите строку");gets(s); k=0;for(i=0;i<strlen(s);i++) if(s[i]= ='a')k++; printf(“количество=%d\n”,k);}
24. Функции работы с символьными массивами в ЯП Си (gets, puts, strlen, strcmp). Примеры использования. В языке Си нет специально определенного строкового типа данных. Строка в языке Си представляет собой массив, состоящий из символов, последним из которых является символ \0. Нулевой символ позволяет функциям, работающим со строками, обнаруживать концы строк. На длину символьного массива в Си нет ограничения. Индекс первого символа строки — 0. Строка описывается как символьный массив. Например: char S[20]; Большинство действий со строковыми объектами в Си выполняются при помощи стандартных библиотечных функций, для этого включите в начало программы заголовочный файл string.h: #include <string.h>, чтобы использовать строковые функции. Ввод – вывод строк Ввод строки символов с клавиатуры: scanf(″%s″, S); Спецификатор %s указывает, что будет читаться строка. Операция взятия адреса перед именем строки в данном случае не нужна. Функцией scanf() по формату %s строка вводится только до первого пробела! scanf(″%80s″, S); Спецификатор ″%80s″ указывает на то, что будет прочитано не более 80 символов, что позволяет избежать переполнения строки. Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция Gets(имя строковой переменной); Функция читает символы из строки ввода до тех пор, пока не встретит символ новой строки ‘\n’, который создается нажатием клавиши <ввод>. К прочитанным символам (без ’\n’) присоединяется нуль-символ ‘\0’ и полученное значение присваивается соответствующей переменной-строке.
Вывод строки символов на экран: printf(″ Вы ввели %s″, S); Функция puts(имя строковой переменной); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n). Аналогом такой функции будет: printf(“%s \n”,имя строковой переменной); Определение длины строк Функция strlen(имя строковой переменной) возвращает длину строки в символах(при этом завершающий нулевой байт не учитывается). Копирование строк Оператор присваивания для строк не определен! Для строковых переменных s1 и s2 операция s1 = s2; не определена. Чтобы корректно скопировать одну строку в другую используется функция strcpy(s1, s2); - копирует значение строки s2 в строку s1, включая завершающие нули. Сравнение строк Если i – переменная типа int, и если s1 и s2 – указатели на char, то оператор i = strcmp(s1, s2); установит i равной –1 или другому отрицательному числу, если строка s1 в алфавитном порядке меньше строки s2. Если строки в точности совпадают, функция возвратит нуль. Если строка s1 в алфавитном порядке больше строки s2, она вернет +1 или другое положительное число. Функция strcmp() чувствительна к регистру букв – при сравнении строчные буквы считаются большими, чем их прописные эквиваленты (так как буквы нижнего регистра имеют большие ASCII-значения, чем буквы верхнего регистра). Пример: Ввести строку. Посчитать в ней все буквы «а». #include<stdio.h> #include<string.h> main() {char s[20]; int i,k=0; puts("введите строку");gets(s); k=0;for(i=0;i<strlen(s);i++) if(s[i]= ='a')k++; printf(“количество=%d\n”,k);}
25. Структурированный тип данных структура в ЯП Си (определение, объявление, обращение к полям, пример). Структуры Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных. Формат описания структурного типа: struct имя_типа {определения_элементов}; В конце обязательно ставится точка с запятой (это оператор). Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура: struct sotrudnik { int nom; char fio[25]; float zarplata;}; Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип. После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным: struct sotrudnik sot1, sot2; Здесь sot1 и sot2 — переменные структурного типа. Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные: struct { int nom; char fio[25]; float zarplata;} sot1, sot2; Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа. Обращение к элементам (полям) структурной величины производится с помощью уточненного имени: имя_структуры.имя_элемента Примеры: sotl.fam; sot1.zarplata; Значения элементов структуры могут определяться вводом, присваиванием, инициализацией. Пример инициализации в описании: student sot1={300, "Кротов", 3500}; Если список инициализаций будет короче, то оставшиеся поля структурной переменной заполняются нулями. Поля структуры могут сами иметь структурный тип. Например, в структуре Person, содержащей сведения – ФИО, дата рождения, сделать дату рождения внутренней структурой date по отношению к структуре Person. Тогда шаблон такой конструкции будет выглядеть так: struct date {int day, month, year;}; struct Person {char fio[40]; struct date f1; }; Объявляем переменную: struct Person a; Тогда обращение к полям структурной переменной a будет выглядеть следующим образом: a. fio a. f1. day a. f1. month a. f1. year
26. Массивы структур в ЯП Си (объявление, обращение к элементам и их полям, примеры). Структуры Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных. Формат описания структурного типа: struct имя_типа {определения_элементов}; В конце обязательно ставится точка с запятой (это оператор). Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура: struct sotrudnik { int nom; char fio[25]; float zarplata;}; Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип. После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным: struct sotrudnik sot1, sot2; Здесь sot1 и sot2 — переменные структурного типа. Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные: struct { int nom; char fio[25]; float zarplata;} sot1, sot2; Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа. Обращение к элементам (полям) структурной величины производится с помощью уточненного имени: имя_структуры.имя_элемента Примеры: sotl.fam; sot1.zarplata; Допускается использование массивов структур. Это позволяет создавать программы, оперирующие с простейшими базами данных. Пример: Сформировать массив структур, содержащих информацию о студентах (фамилия, оценка по математике). Вывести на экран весь список и вычислить средний балл в группе по математике. #include<stdio.h> void main() {struct student /*описание структурного типа*/ {char fam[20]; int oc;}; struct student a[10]; /*объявление массива структур*/ int i,n=4;float sum=0,sred; for(i=0;i<n;i++) /*заполнение массива структур данными*/ {printf("введите фамилию\n");scanf("%s",&a[i].fam); /*обращение к полям структуры*/ printf("введите оценку\n");scanf("%d",&a[i].oc);} puts("список студентов:"); for(i=0;i<n;i++)/*вывод массива структур на экран*/ printf("%20s%4d\n",a[i].fam,a[i].oc); for(i=0;i<n;i++)sum+=a[i].oc; /*поиск суммы оценок*/ sred=sum/n;printf("средний балл=%f\n",sred); }
27. Работа с файлами на диске в ЯП Си (объявление указателя, режим доступа к элементам, открытие, закрытие, средства ввода вывода,). Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки как единое целое. В файлах размещаются данные, предназначенные для длительного хранения. Файл хранится во внешней памяти на внешнем носителе, и по мере необходимости данные из файла вызываются в оперативную память для обработки. Любой файл рассматривается как байтовая последовательность, отсутствует понятие типа файла. Последний байт файла имеет значение EOF. Каждому файлу в программе присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) – это указатель на файл, т.е. на область памяти, где содержится вся необходимая информация о файле. Формат объявления указателя на файл следующий: FILE *имя указателя; Открытие файла Прежде чем начать работать с файлом, т.е. получить возможность чтения или записи информации в файл, его нужно открыть для доступа. Для этого обычно используется функция имя файловой переменной= fopen (“путь и имя файла”, “режим”); Пример: FILE *f; f = fopen (" d:\\urok\\file1.dat ", "w"); Обратный слеш «\», как специальный символ в строке записывается дважды. При успешном открытии функция fopen возвращает указатель на файл. При ошибке возвращается NULL. (Данная ситуация обычно возникает, когда неверно указывается путь к открываемому файлу, например, если указать путь, запрещенный для записи.) Режим доступа к файлу: w – файл открывается для записи (write); если файла с заданным именем нет, то он будет создан; если же такой файл уже существует, то перед открытием прежняя информация уничтожается; r – файл открывается для чтения (read); если такого файла нет, то возникает ошибка; a – файл открывается для добавления (append) новой информации в конец; r+ (w+) – файл открывается для редактирования данных, т.е. возможны и запись, и чтение информации; t – файл открывается в текстовом режиме; b – файл открывается в двоичном режиме; Последние два режима используются совместно с рассмотренными выше. Возможны следующие комбинации режимов доступа: “w+b”, “wb+”, “rw+”, “w+t”, “rt+”, а также некоторые другие комбинации. Каждый открытый файл имеет маркер или указатель чтения-записи данных. При открытии файла этот указатель устанавливается на начало данных. Функции работы с файлами fclose (имя указателя на файл); - закрытие файла fcloseall (); - закрытие всех файлов fprintf ( имя указателя на файл,форматная_строка, список_аргументов); - запись в файл (например, fprintf(f,"%4d",c);) fscanf (имя указателя на файл, форматная_строка, список_аргументов) – считывание информации из файла (например, fscanf(f,"%d",&c);) При достижении конца файла возвращается значение EOF. fputs ( строковая переменная, указатель на файл ) – запись строки в файл; функция не добавляет символ перехода на новую строку в результирующую строку. Поэтому после fputs() необходимо вызывать функцию fputc() с символом новой строки в качестве первого аргумента: fputc(′\n′, fp); При записи в файл символ ‘ \n ’ трансформируется в символы возврата каретки и перевода строки. fgets ( строковая переменная, максимальное число читаемых символов плюс единица, указатель на файл ) - читает строку символов из файла, функция возвращает указатель на строку при успешном завершении и константу NULL в случае ошибки либо достижения конца файла Пример: fgets (s, 50, f); функции прочитает из файла одну строку текста полностью, если ее длина меньше 50 символов с учетом символа '\n', который функция также сохранит в строке. Последним (50-ым) элементом строки s будет символ '\0', добавленный fgets(). Если строка окажется длиннее, то функция прочитает 49 символов и в конце запишет '\0'. В таком случае '\n' в считанной строке содержаться не будет.
28. Указатели в ЯП Си. Операции над указателями. Указатели Указатель — это адрес поля памяти, занимаемого программным объектом. Для хранения адресов используются переменные типа «указатель». Значение указателя равно первому байту участка памяти, на который он ссылается. Формат описания указателей: тип *имя_переменной; Примеры описания указателей: int *i; char *c; float *f; После такого описания переменная i может принимать значение указателя на величину целого типа; переменная c предназначена для хранения указателя на величину типа char; переменная f — на величину типа float. В заголовочном файле stdio.h определена константа — нулевой указатель с именем NULL. Например: f=NULL; Нулевой указатель обозначает отсутствие конкретного адреса ссылки. Указатель типа void указывает на неопределенный тип данных. При работе с такими указателями используется операция приведения типов: void *p; char c,s=’f’; p=&s; c=* (char*) p; Значение указателя можно вывести на экран с помощью функции printf, используя спецификацию % p (pointer), результат выводится в шестнадцатеричном виде. Пример: int a = 5, *p; p = &a; printf(“a = %d, *p = %d, p = %p.\n”, a, *p, p); Результат может быть следующим: a = 5, *p = 5, p = FFF4, p1 = FFF6, p2 = FFF8.
Операции над указателями Операция & — «взять адрес» дает в результате адрес переменной в памяти. Пример: int a=5; char s='G'; float r=1.2 E8; Тогда допустимы операторы i=& a; c=& s; f=& r; Операция * является знаком операции разадресации: «значение, расположенное по указанному адресу». После приведенных выше описаний в записи выражений взаимозаменяемыми становятся а и *i, s и *c, r и *f. Например, два оператора х=а+2; и x=*i+2; или a++ и (* i)++ тождественны друг другу
29. Динамическая и статическая память. Функции работы с динамической памятью в ЯП Си.
|
||
|
Последнее изменение этой страницы: 2021-01-08; просмотров: 163; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.009 с.) |