查找.c文件的关键字,用基本的C语言编写,不要c++

2024-11-27 22:06:46
推荐回答(1个)
回答1:

这是查找一个文件的程序。上此有谁问了 类似 grep 程序, (用于查找 许多文件),我给了,在知道里查一下应能发现。
#include
#include
#define Buff_size 4096
void search(char * target_string);
void clean_it(char * buff, int N_size);
char target_string[64];
char namein[72];
char *buff;
FILE *fin;

void main ()
{
printf("Enetr file name\n");
scanf("%s",namein);
if ( (fin = fopen(namein,"r") ) == NULL ) {
printf("\007Cann't open the file: %s ", namein);
exit(0);
};
buff = (char *) malloc( Buff_size * sizeof (char));
if (!buff) {
printf("\007No enough memory for Buff\n");
exit(0);
};
printf("Enetr the target string you want to search\n");
scanf("%s",target_string);
(void) search( target_string );
fclose(fin);
exit(0);
}

void search(char * target_string)
{
int i,j,NN;
int LL,L_target;
int ii;
int flag_print_name = 0;
L_target = strlen(target_string);
NN = 0;
while ( fgets( buff, Buff_size, fin) !=NULL ) {
LL = 0;
LL = strlen(buff);
NN = NN + 1;
ii = LL - L_target;
if (ii < 0 ) goto Lab1;
for (i=0;i if ( strncmp( &buff[i], target_string, L_target) == 0 ) {
if (flag_print_name == 0) {
printf("In %s\n",namein);
flag_print_name = 1;
};
printf("Line: %d: %s\n", NN, buff);
goto Lab1;
};
};
Lab1:;
(void) clean_it( buff, Buff_size);
};
}

void clean_it(char * buff, int N_size)
{
int i;
for (i=0; i< N_size; i++) strncpy(&buff[i], "\0",1);
}