您的位置:首页 > 运维架构 > Linux

文件查找源码(linux环境下)

2016-04-20 13:16 465 查看
1、实现的功能是:在linux下,建立一个文件,在文件中能够输入一个字符串。在字符串的最大值内,如果换行处为数据,则追溯到离他最近的空格处换行。

#include<stdio.h>
#include<string.h>
#define MAX 15
#define FMAX 20
FILE *make_file()
{
FILE *fs;
printf("putin the file's name:");
char *fname = (char *)malloc(FMAX);
memset(fname,0,FMAX);
char addr[256] = "/caigaojian/data_structure/";
gets(fname);
strcat(addr,fname);
fs = fopen(addr,"w+");
return fs;
}

void putin(FILE *fs)
{
printf("putin data:");
char *buf = (char *)malloc(MAX*10);
memset(buf,0,MAX);
gets(buf);
int size = strlen(buf);
int sum;
while(size > MAX)
{
sum = MAX;
while((*(buf + sum) != ' ') && (*(buf + sum-1) != ' ') && (sum >= 0))
sum --;
fwrite(buf,1,sum,fs);
size = size - sum;
if(*(buf + sum) == ' ')
{
strncpy(buf, buf+sum+1, --size);
fwrite("\n\r",1,1,fs);
}
else
{
strncpy(buf, buf+sum, size);
fwrite("\n\r",1,1,fs);
}
}
if(fwrite(buf,1,size,fs) == size)
printf("write OK");
free(buf);
}

int main()
{
FILE *fs = make_file();
putin(fs);
fclose(fs);
return 0;
}

2.增加查找功能

#include<stdio.h>
#include<string.h>
#define MAX 15
#define FMAX 20

//*****************************************
#define WORD_SIZE 20
char *WORD;
char addr[256] = "/caigaojian/data_structure/";
//*****************************************
FILE *make_file()
{
FILE *fs;
printf("putin the file's name:");
char *fname = (char *)malloc(FMAX);
memset(fname,0,FMAX);

gets(fname);
strcat(addr,fname);
fs = fopen(addr,"w+");
return fs;
}

void putin(FILE *fs)
{
printf("putin data:");
char *buf = (char *)malloc(MAX*10);
memset(buf,0,MAX);
gets(buf);
int size = strlen(buf);
int sum;
while(size > MAX)
{
sum = MAX;
while((*(buf + sum) != ' ') && (*(buf + sum-1) != ' ') && (sum >= 0))
sum --;
fwrite(buf,1,sum,fs);
size = size - sum;
if(*(buf + sum) == ' ')
{
strncpy(buf, buf+sum+1, --size);
fwrite("\n\r",1,1,fs);
}
else
{
strncpy(buf, buf+sum, size);
fwrite("\n\r",1,1,fs);
}
}
if(fwrite(buf,1,size,fs) == size)
printf("write OK");
free(buf);
fclose(fs);
}
//************************************************************************************************************
void word()
{
printf("\nplease putin the word:");
WORD = malloc(WORD_SIZE);
memset(WORD,0,WORD_SIZE);
gets(WORD);
int word_size = 0;
word_size = strlen(WORD);

FILE* fs = fopen(addr,"r");
int row[MAX]={0},column[MAX]={0};
char str[MAX] = {0};
fread(str, 1, MAX, fs);
int row_size = strlen(str);

int i = 0,j = 0,k = 0;
while((str[i+j] != '\0') )//&& (word[j] != '\0'))
{
if(str[i+j] == *(WORD+j))
{
j++;
}
else
{
j = 0;
i ++;
}
if(*(WORD+j) == '\0')
{
row[k] = i;//the addresss in i rows
k++;//means already have one
}
}

printf("\n\r%d times,they are ",k);
for(i = 0;i<k;i++)
printf("%d ",row[i]+1);
printf("\n\r");
}
//************************************************************************************************************
int main()
{

FILE *fs = make_file();
putin(fs);
//*************************************************
word();
//*************************************************

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: