6 (Семинары)
Описание файла
Файл "6" внутри архива находится в папке "Семинары". PDF-файл из архива "Семинары", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Семинар 6 (1 курс, Си). Переменные, строки, файлыАвтоматические и статические переменныеvoid function(void){int i = 0;static int j = 0;printf ("\n i = %d,}int main(){function();function();}j = %d", i++, j++);Глобальные и локальные переменныеint j;int i, j;void main(){int i;printf ("\n%d %d", i, j) ;void main(){int j=10;printf ("\n%d %d", i, j) ;}- j = 0.-непредсказуемый результат с i.}Локальная переменная «перекрывает» глобальнуюВнешние переменныеФайл 1.сФайл 2.сextern int i;int i =10;void main(){printf ("\n%d", i);}Динамическое выделение памятиvoid main(){int N = 100;int a[N];}(допускается в новом стандарте)#define N 100void main(){int a[N];}//статическое!Семинар 6 (1 курс, Си).
Переменные, строки, файлы2int *ap; // статическим будет указательap = (int*) malloc(100*sizeof(int)); // запрос на выделение памятилучше:if ((ap = (int*) malloc(100*sizeof(int))) == NULL) return;calloc(100,sizeof(int))Использование:ap[0] =23;ap[99] = 50;Освобождение выделенной памяти:free (ap);СтрокиСтрока в Си – массив типа char, заканчивающийся специальным символом конца строки'\0'Константная строка заключается в двойные кавычки:char str[] = "Hello!"; // 'H', 'e', 'l', 'l', 'o', '! ', '\n'printf("\n%s",str);str[0] = 'B';printf("\n%s",str);// Bello!str[0] = str[6];printf("\n%s",str);char *p = "Hello!";printf("\n%c",p[1]);// ep[1] = 'H';Пример.
Копирование строкиvoid main(){int i;char *str = "Hello!";char str2[20];}for (i=0; 1; i++){str2[i] = str[i];if (str[i] == '\0') break;}printf("\n%s", str2);i = 0;while (str2[i]=str[i++]);Семинар 6 (1 курс, Си). Переменные, строки, файлыФункции работы со строками3#include <stdio.h>1. puts(char *string); // выводит в стандартный поток string + добавляет символ'\n'Пример: puts("Hello");2.
gets(char *string); // помещает по адресу string последовательность символов// со стандартного потока ввода, заменяя '\n' на '\0'Пример:char str[128];gets(str);3. sprintf(char *string, char *format, … ); // аналог printf, но вывод в// «строку»Пример:#include <conio.h>void main(){char str[20];int i = 10;}sprintf (str, "Hello! %d times",i);printf("\n%s", str);Другие функции#include <string.h>Функция сравнения строк:int strcmp (char *str1, char *str2)str < str2 функция возвращает число < 0str 1 == str2= 0str1 > str2>0Пример: if (strcmp("Hello!", "Hello") > 0) оператор;Длина строки:int strlen (char *str);Пример: printf ("%d", strlen("Hello!"));+ много других функцийСеминар 6 (1 курс, Си). Переменные, строки, файлыРабота с файлами41) FILE *fp;2) fp = fopen("a.dat", "w"); // "r", "a"; "wb" // открыть файлif (fp == NULL) printf ("\nНе могу открыть файл");3) fprintf (fp, "i = %d", i); //записьв файлfputs ("Hello!", fp);// аналог putsfscanf (fp, "%d", &i);// аналог scanfchar string[80];fgets(string, 80, fp); // 80 – максимальное число символов,которые можно считать + добавленный символ конца строки '\0'.
Функциявозвращает NULL при ошибке или достижении конца файла.4) fclose(fp); // закрыть файлПример: ввести имя файла с клавиатуры и открыть его на чтениеchar fname[128];FILE *fp;…printf("\nВведите имя файла: ");gets (fname); // или fgets(fname, 128, stdin); но '\n' !fp = fopen(fname, "r");if (fp == NULL) printf ("\nНе могу открыть файл");Двоичная запись в файл1) FILE *fp;2) fp = fopen("a.bin", "wb"); сif (fp == NULL) printf ("\nНе могу открыть файл");3) fwrite (void*, int, int, FILE*);адрес объекта записи, длина элемента, их число, указатель наоткрытый файл4) fclose(fp);Пример:float a[10];FILE *fp;…fwrite ( (void*)ar, sizeof(float), 10, fp);Б.
Керниган, Д. Ритчи. Язык программирования Си. §§ 1.9, 1.10, 4.3-4.7, 7.1, 7.2, 7.4-7.8, 8.18.3..