proga
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdbool.h>
#define N 100
//#define N 5
#define VALUE_ERROR -1
#define INPUT_ERROR -2
#define FILE_ERROR -3
#define EMPTY_FILE -4
#define OK 0
#define EXCESS_VALUES 1
void print(const int *pa, int *pe)
{
printf("Array:\n");
while (pa != pe)
{
printf("%d\n",*pa);
pa++;
}
printf("\n");
}
int min(const int* pb, const int* pe)
{
int x;
int min = (*pb) * (*(pb + 1));
while ((pb + 1) < pe)
{
x = (*pb) * (*(pb + 1));
if (min > x)
{
min = x;
}
pb++;
}
return min;
}
void read(FILE *f, int *pb, int **pe, int *rc)
{
int local;
while (((fscanf(f, "%d", &(local))) == 1))
{
if(pb< *pe)
{
*pb = local;
pb++;
*rc = OK;
}
else
{
*rc = EXCESS_VALUES;
}
}
*pe = pb;
}
int main(int argc, char** argv)
{
FILE *f;
int a[N];
int result = 0;
int *pb = a;
int *end = a + N;
int rc;
if (argc != 2)
{
fprintf(stderr, "your_program.exe <source file>\n");
return INPUT_ERROR;
}
f = fopen(argv[1], "r");
if (f == NULL)
{
fprintf(stderr, "Could not open %s because of %s\n", argv[1], strerror(errno));
return FILE_ERROR;
}
read(f, pb, &end, &rc);
print(a, end);
fclose(f);
if (end == pb) //если файл пуст
{
printf("Your file is empty.");
return EMPTY_FILE;
}
if ((end - 1) == pb) //если файле только одно число
{
printf("Need more the 1 value");
return VALUE_ERROR;
}
result = min(a, end); //массив состоит как минимум из 2-х чисел
if (rc == EXCESS_VALUES)
printf("The file contains more than %d values/n", N);
printf("min= %d", result);
return rc;
}
--------------------------------------------------------------------------------------------------
void read(FILE *f, char mas[],int len, int *real_len)
{
int i=0;
while((!feof(f)) && (i < len))
{
(fscanf(f, "%s ", &mas[i]));
i++;
}
*real_len = i;
}
void poisk (FILE* f3, char x[], char y[], int real_n, int real_m)
{
int kol = 0;
int realkol = 0;
int j = 0;
for (int i = 0; i < real_n; i++)
{
if(y[j] == x[i])
{
kol++; // количество "попаданий"
if(j == (real_m - 1))// если массиве y полностью просмотрен
{
j = 0;
realkol++;
kol = 0;
}
else
j++;// взятие нового элемента массива y
}
else// если между элементы не равны
{
// if(kol == real_m) // если количество "попаданий " свопало с длиной массива y
// realkol++;
kol = 0;
j = 0;
}
}
fprintf(f3, "%d", realkol);
}
int main(int argc, char** argv)
{
FILE *f1;
FILE *f2;
FILE *f3;
char x[N], y[M];
int real_n, real_m;
int n, m;
if (argc != 4)
{
printf("your programm _.exe in_x_n.txt in_y_n.txt out_n.txt\n");
return ENTER_ERROR;
}
f1 = fopen(argv[1], "r");
if (f1 == NULL)
{
printf("Could not open your file file\n");
return OPEN_ERROR;
}
f2 = fopen(argv[2], "r");
if (f2 == NULL)
{
printf("Could not open your file file\n");
return OPEN_ERROR;
}
f3 = fopen(argv[3], "w");
if (f3 == NULL)
{
printf("Could not open your file file\n");
return OPEN_ERROR;
}
fscanf(f1, "%d", &n); // считываем "длину" массива
fscanf(f2, "%d", &m);
if(n < m)
{
printf("Error, need n > m \n");
return LENGTH_ERROR;
}
read(f1, x, n, &real_n); // чтение файла, заполнение массива, и определение "реальной длины"
read(f2, y, m, &real_m);
if((real_n < real_m) || (real_n == 0) || (real_m == 0))
{
printf("Error, need n>m, or file is empty \n");
return LENGTH_ERROR;
}
poisk(f3, x, y, real_n, real_m);
fclose(f1);
fclose(f2);
fclose(f3);
}
---------------------------------------------------------------------------------
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := read.o print.o kvadr.o
ifeq ($(mode), debug)# Отладочная сборка: добавим генерацию отладочной
CFLAGS += -g3
endif
ifeq ($(mode), release)# Финальная сборка: исключим отладочную информацию
CFLAGS += -DNDEBUG -g0
endif
ekz.exe : $(OBJS) ekz.o
$(CC) -o ekz.exe $(OBJS) ekz.o
read.o : read.c read.h
$(CC) $(CFLAGS) -c read.c
print.o : print.c print.h
$(CC) $(CFLAGS) -c print.c
kvadr.o : kvadr.c kvadr.h
$(CC) $(CFLAGS) -c kvadr.c
ekz.o : ekz.c read.h kvadr.h
$(CC) $(CFLAGS) -c ekz.c
clean :
$(RM) *.o *.exe
----------------------------------------------------------------------
# Компилятор
CC := gcc
# Опции компиляции
CFLAGS := -std=c99 -Wall -Werror -pedantic
# Общие объектные файлы
OBJS := hello.o buy.o
ifeq ($(mode), debug)
# Отладочная сборка: добавим генерацию отладочной информации
CFLAGS += -g3
endif
ifeq ($(mode), release)
# Финальная сборка: исключим отладочную информацию и утверждения (asserts)
CFLAGS += -DNDEBUG -g0
endif
greeting.exe : $(OBJS) main.o
$(CC) $^ -o $@
%.o : %.c *.h
$(CC) $(CFLAGS) -c $<
clean :
$(RM) *.o *.exe
---------------------------------------------------------------------------------
Шаг 1. Компиляция программы
$ gcc -std=c99 -Wall -Werror -o0 -fprofile-arcs -ftest-coverage 1.c -o 1.exe
Шаг 2. Запуск программы
Шаг 3. Запуск утилиты gcov
Чтобы запустить утилиту, используем $ gcov 1.c