项目场景:
查找文件中 <数据头>+<数据>+<数据尾>,输出<数据>+<自定义数据尾>
问题描述:
读取一个文件,从文件中查找想要的数据,根据数据头如"Cost:"和数据尾","找到中间的数据,输出到另一个文件中. ```
解决方案:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
#define STR_MAX 10
#define FILE_READ_MAX 65535
#define FILE_NAME_MAX 100
char namefile[] = { "C:\\Users\\User\\Desktop\\AlexNet.txt" };
char outnamefile[] = { "C:\\Users\\User\\Desktop\\out.csv" };
void main()
{
FILE* fp_in, *fp_out;
char namebuffer[FILE_NAME_MAX],outnamebuffer[FILE_NAME_MAX];
char filebuffer[FILE_READ_MAX],outbuffer[FILE_READ_MAX];
char *pc_in = filebuffer, *pc_out = outbuffer;
char str_head[STR_MAX], str_end[STR_MAX],str_between[STR_MAX];
char *p_in = namebuffer;
char *p_out = outnamebuffer;
char *ps_head = str_head;
char *ps_end = str_end;
memset(outbuffer, 0, strlen(outbuffer));
memset(filebuffer, 0, strlen(filebuffer));
printf("in file name and dir:");
scanf("%s", p_in);
printf("out file name and dir:");
scanf("%s", p_out);
printf("head file name and dir:");
scanf("%s",ps_head);
fp_in = fopen(p_in, "r");
if (fp_in == NULL)
{
printf("file open error\n");
exit(0);
}
fp_out = fopen(p_out, "w+");
if (fp_out == NULL)
{
printf("file open error\n");
exit(0);
}
fread(filebuffer, FILE_READ_MAX,1,fp_in);
while (*pc_in)
{
if (strncmp(pc_in, ps_head, strlen(ps_head)) == 0)
{
pc_in = pc_in + strlen(ps_head);
while (*pc_in)
{
if(*pc_in == ',')
{
pc_in = pc_in + strlen(ps_end);
*(pc_out++) = '\n';
break;
}
*(pc_out++) = *(pc_in++);
}
}
pc_in++;
}
printf("%s", outbuffer);
fseek(fp_out, 0, SEEK_SET);
fwrite(outbuffer, strlen(outbuffer), 1, fp_out);
fclose(fp_in);
fclose(fp_out);
while (1);
}