
- •Основы программирования язык “с” Минск – 2005
- •§1 Введение в программирование
- •Void main()
- •Void main()
- •Void main()
- •2 Распечатать свою фамилию следующим образом
- •3. Распечатать прямоугольник следующим образом
- •1.1 Простые программы: печать стоки текста Понятие переменной.
- •Volatile while
- •1.2 Целый тип данных
- •1.3 Числа с плавающей точкой
- •Void main({
- •1.4 Символьный тип
- •Void main()
- •§2 Управляющий структуры
- •2.1 Структура выбора if (если) и if/else(если - иначе)
- •Void main()
- •Void main()
- •2.2 Структуры повторенийfor(цикл)
- •Void main()
- •Void main()
- •2.3 Структура повторения while (пока)
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •Void main()
- •2.4 Структура многомерного выбора switch
- •Void main()
- •Void main()
- •2.5 Операторы continue и break
- •Void main()
- •Void main()
- •2.6 Контрольные вопросы:
- •§3 Функция
- •Int printf(“const char * string”,…); %[флаг][ширина][точность][модификатор типа] тип_формата
- •Int scanf(const char * format, ……); возвращаемое значение – число считанных полей
- •3.1 Определение функции:
- •3.2 Классы памяти.
- •3.3 Указатели
- •Void main()
- •Void fff(int,int,int*,int*,int*,double*);
- •Void main()
- •Void fff(int a,int b,int*p1,int*p2,int*p3,double*p4)
- •Генерация случайных чисел.
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •3.6 Переменные перечисляемого типа
- •Int rollDice();
- •Void main()
- •Int sum,myPoint;
- •Int rollDice(){
- •Int die1,die2,workSum;
- •Void main()
- •§4 Массивы
- •4.1 Одномерные массивы
- •Int array[10];
- •4.2 Примеры использования массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •4.3 Сортировки массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Int arr1[maxsize],arr2[maxsize],buf;
- •Void main()
- •4.4 Передача массивов функции
- •4.5 Двумерные массивы
- •Void main()
- •Int I,j,temp;
- •Void main()
- •4.6 Контрольные вопросы:
- •§5 Символьная строка
- •5.1 Объявление символьной строки
- •Void main()
- •Void main()
- •Int srav(char *,char *);
- •Void main()
- •Int srav(char *X,char *y)
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •5.3 Массив строк
- •Void main()
- •Void main()
- •Void main()
- •§6 Динамическое распределение памяти
- •6.1 Функция malloc()
- •Void * malloc(unsigned size)
- •Void free(free *ptr)
- •Void main(){
- •Void main(){
- •Void vvod_mas(int*,int);
- •Void sort_vozr(int*,int);
- •Void main()
- •Vvod_mas(ptr1,n1);
- •Vvod_mas(ptr2,n2);
- •Void sort_vozr(int*X,int n)
- •Void vvod_mas(int*X,int n)
- •6.2 Функция сalloc()
- •Void * сalloc(unsigned num ,unsigned size)
- •6.3 Функция realloc()
- •Void * realloc(void *ptr ,unsigned size)
- •§7 Структура
- •7.1 Объявление структуры
- •Void main()
- •7.2 Объединения
- •§8 Файлы и потоки
- •8.1 Объявления файла
- •Int feof(file *);
- •8.2 Работа с текстовым файлом
- •Int fprintf(file *, const char format, …);
- •Void main()
- •Int account;
- •Int fputs(const char *, file *);
- •Int fscanf( file *, const char *format, …..);
- •Void main()
- •Void main()
- •Int account;
- •Void main()
- •Int fseek(file *,long ,int );
- •Void main()
- •Void main()
- •Void main()
- •Void show_file(file *k1)
- •Void dobav_file(file *k1)
- •Void fill_file(file *k1)
- •Создание файла произвольного доступа.
- •8.3 Работа с бинарным файлом
- •Void main()
- •Void main()
- •Void print_file(file *);
- •Void main(){
- •If(feof(k1)){
- •If(feof(k2)){
- •Void print_file(file *k){
- •8.4 Kонтрольные вопросы
- •Какие операции определены со строками?
Void main()
{
Int account;
char name[30];
double balance;
FILE *cfPtr;
if((cfPtr=fopen("clients.dat","r"))== NULL)
{
printf("File could not be opened\n");
return;
}
printf("%-10s%-13s%-17s\n","Account","Name", "Balance");
fscanf(cfPtr,"%d%s%lf",&account,name,&balance);
while(!feof(cfPtr))
{
printf("%-10d%-13s%7.2lf\n",account,name , balance);
fscanf(cfPtr,"%d%s%lf",&account,name,&balance);
}
fclose(cfPtr);}
char * fgets(char *,int , FILE *);
функция fgets() считывает из файла на единицу меньше символов указанных с помощью int или как только встречает символ новой строки или символ конец файла.
Пример, когда считываются строки из файла.
#include<stdio.h>
Void main()
{
FILE *k;
char s[200];
k=fopen("aaa.bbb","r");
if(!k)
{
printf("\a\a\a\n");
return;
}
while(!feof(k))
{
fgets(s,100,k);
puts(s);
}
fclose(k);
}
Int fseek(file *,long ,int );
Первый параметр- это указатель на файл; следующие параметр задает количество байтов, на которые необходимо сместить указатель в направлении указанном последним параметром.
Последним параметром могут быть:
SEEK_SET 0 Смещение выполняемся от начало файла
SEEK_CUR 1 Смещение выполняемся от текущей позиции
SEEK_END 1 Смещение выполняемся от конца файла
Функция возвращает отличное от нуля результат только для запроса, который не может быть выполнен.
Для текстового файла второй параметр функции fseek должно быть равно нулю, либо значению которое вернула функция ftell, а последний параметр должен быть SEEK_SET
long int ftell(FILE *);
Функция возвращает значение индикатора текущей позиции в файле.
Задачи:
Написать программу, в которой создаются два файла, для записи 10 целых чисел.
Используя первую задачу, в третий файл переписать поочередно числа из заранее созданных файлов.
#include<stdio.h>
Void main()
{
FILE *k1,*k2,*k3;
int x;
k1=fopen("aaa.txt","w+");
if(!k1)
{
puts("FILEa ne najden!!!");
return;
}
k2=fopen("bbb.txt","w+");
if(!k2)
{
puts("FILEb ne najden!!!");
return;
}
k3=fopen("ccc.txt","w");
if(!k3)
{
puts("FILEc ne najden!!!");
return;
}
for(int i=1;i<=10;i++)
{
fprintf(k1,"%d ",i);
}
for(i=11;i<=20;i++)
{
fprintf(k2,"%d ",i);
}
fseek(k1,0,0);
fseek(k2,0,0);
for(i=1;i<=10;i++)
{
fscanf(k1,"%d",&x);
fprintf(k3,"%d ",x);
fscanf(k2,"%d",&x);
fprintf(k3,"%d ",x);
}
fclose(k1);
fclose(k2);
fclose(k3);
}
Сначала создать 2 файла для записи, потом 3-ий файл для записи из этих 2-х файлов, причем длина файлов может быть не одинаковой.
#include<stdio.h>
Void main()
{
FILE *k1,*k2,*k3;
int x,y;
k1=fopen("aaa.txt","w+");
if(!k1)
{
puts("FILEa ne najden!!!");
return;
}
k2=fopen("bbb.txt","w+");
if(!k2)
{
puts("FILEb ne najden!!!");
return;
}
k3=fopen("ccc.txt","w");
if(!k3){
puts("FILEc ne najden!!!");
return;
}
puts("Enter: I-ij FILE");
do{
scanf("%d",&x);
fprintf(k1,"%d ",x);
}while(x);
puts("Enter: II-oj FILE");
do{
scanf("%d",&x);
fprintf(k2,"%d ",x);
}while(x);
fseek(k1,0,0);
fseek(k2,0,0);
fscanf(k1,"%d",&x);
fscanf(k2,"%d",&y);
while(!feof(k1) && !feof(k2)){
fprintf(k3,"%d ",x);
fprintf(k3,"%d ",y);
fscanf(k1,"%d",&x);
fscanf(k2,"%d",&y);
}
if(feof(k1)){
while(!feof(k2)){
fprintf(k3,"%d ",y);
fscanf(k2,"%d",&y);
}
}
if(feof(k2)){
while(!feof(k1)){
fprintf(k3,"%d ",x);
fscanf(k1,"%d",&x);
}
}
fclose(k1);
fclose(k2);
fclose(k3);
}
Задачи:
Создать файл для записи текста. text.txt
#include<stdio.h>
void main()
{
FILE *k;
char x[200];
k=fopen("text.txt","w");
if(!k){
printf("\a\a\a\n");
return;
}
printf("Vvedite stroku: vved prekrachaetsya pri vvode 0\n");
gets(x);
while(x[0]!='0'){
fputs(x,k);
fputs(“\n”,k);
gets(x);
}
fclose(k);
}
Посчитать количество лишних пробелов в тексте, записанном в файле text.txt.
#include<stdio.h>
void main()
{
FILE *k;
char ch;
int kol=0;
k=fopen("text.txt","r");
if(!k){
printf("\a\a\a\n");
return;
}
fscanf(k,"%c",&ch);
while(!feof(k)){
if(ch==' '){
fscanf(k,"%c",&ch);
while(ch==' '){
kol++;
fscanf(k,"%c",&ch);
}
}
fscanf(k,"%c",&ch);
}
printf("Kol ' ' = %d\n",kol);
fclose(k);
}
Переписать из файла text.txt в файл text1.txt без лишних пробелов.
#include<stdio.h>