Считывание из заголовочного файла названий всех функций - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main(void)
{FILE *fi1, *fi2, *fo;
char FileZ[20],FileR[20],s[100],*list[25],*chr;
int i,j,sum,a,b,c;
j=0;
printf("vvedite imay zaglovochnogo faila : ");
scanf("%s",FileZ);
fi1 = fopen(FileZ, "r+");
if (!fi1) printf("Oshibka otkritiya faila1\n");
else
{ while (!feof(fi1))//poka ne konets faila
i=sum=0;
fgets(s,100,fi1);
{ while (s[i]!=NULL)//poka ne konets stroki
if(s[i]=='(') sum++;//schetchik ckobocek
if(s[i]==')') sum--;//schetchik ckobocek
if(s[i]==';'&& sum==0)// yslovie obiavlenia functsii
{chr=strchr (s,'(');
a=chr-s;// pozitsia pervoi otkrivaiyshiisa skoboki
chr=strrchr (s,' ');
b= chr-s;// pozitsia pervogo probela do skobki
c=(b+1)-(a-1);// dlina nazvania functsii
//list[j]=... //zapis v massiv stroki iz s c pozitsii(b+1) do (a-1)-nazvanie funktsii
j++;
}
i++;
}
}
}struct Item //opisanie struktur
{
struct Item *next;
struct Item *prev;
};
struct List
{
struct Item *head;
struct Item *tail;
};
void Add(struct List *l,struct Item *m); //prototipy
void Clear(struct List *l);
int Count(struct List*l);
void Delete(struct List*l,int n);
int GetIndex(struct List*l,struct Item*m);
struct Item*GetItem(struct List*l,int n);
void Insert(struct List*l,struct Item*m,int n);
void Print(struct List*l);
void Printt(struct Item*m);
struct Item*Remove(struct List*p,int);Решение задачи: «Считывание из заголовочного файла названий всех функций»
1 chr=strrchr (s2,'*');//ishem zvezdochky
Объяснение кода листинга программы
2 if (chr) { // если есть звездочка
3 s1 = strdup (s2); // то скопировать строку s2 в s1
4 *chr = '\0'; // заменить звездочку на ноль
5 } else { // если звездочки нет
6 s1 = strdup (s2); // то скопировать строку s2 в s1
7 }
8 //printf (%s\n,s1); // вывести на экран скопированную строку
9 //free (s1); // освободить память
10 //exit (0); // завершить программу
11 //s1=NULL; // очистить указатель
12 //s2=NULL; // очистить указатель
13 //return 0; // вернуть ноль
14 //s1=s2; // присвоить s1 значение s2
15 //s2=NULL; // очистить указатель
16 //printf (%s\n,s1); // вывести на экран скопированную строку
17 //free (s1); // освободить память
18 //exit (0); // завершить программу
19 //s1=NULL; // очистить указатель
20 //return 0; // вернуть ноль