公司内部员工融资风险:一个C语言课程项目,请GG们帮我做做

来源:百度文库 编辑:高校问答 时间:2024/04/27 21:24:36
http://www.webi-hp.com/candy/c.htm

拜托大家!好了以后把源码发到 mail
myqq48942@163.com

留下百度ID,我会加分给大家的。

***写了基本框假,改天再来调试*********
***巨累

#include<stdio.h>
#include<iostream.h> //在我的编译器下,不能使用printf进行输出,所以,需要你自己将流试输出改
#pragma argsused
bool openfile(FILE *f,char *filename);
void savefile(FILE *f,char *type,int *p);
int findstr(FILE *f,char *str);
int * replace(FILE *f,char *s,char *d);
int * deletefile(FILE *f,char *s);
char *fenli(char *s);
int main(int argc, char* argv[])
{
char *sel=new char[50];
char record;
int *mpos;
char *fname,*fn2;
fname=&sel[2];
FILE *in;
while(1)
{
cout<<"-";
gets(sel);
switch(sel[0])
{
case 'h':cout<<"帮助信息: "<<endl;
cout<<"-o filename 打开文件"<<endl;
cout<<"–h 帮助信息,提示各个参数的格式和含义"<<endl;
cout<<"–s filename 保存文件到filename指定的路径和文件名"<<endl;
cout<<"–f stringtofind 查找stringtofind字符串,并将查到的字符串的个数在屏幕上显示,并将个数写到文件 学号_result.txt中,路径和最后-s中的filename同一个路径"<<endl;
cout<<"–r sourcestring targetstring 替换字符串,将文件中的sourcestring替换成targetstring,将替换多少处显示在屏幕上,并将替换的个数和替换后的文本都写道 学号_result.txt中,路径要求同上"<<endl;
cout<<"–d stringtodelete删除字符串,将文件中的stringtodelete删除,将删除多少处显示在屏幕上,并将删除的个数和删除后的文本都写到 学号_result.txt中,路径要求同上"<<endl;
cout<<"q 退出程序"<<endl;
record='h';
break;
case 'q':return 0;
case 'o': if(!openfile(in,fname))
{
cout<<"打开文件错误!"<<endl;
exit(1);
}
cout<<"打开文件成功"<<endl;
record='o';
break;

case 's': switch(record)
{
case 'r': savefile(in,fn2,mpos);
break;
case 'd': savefile(in,"",mpos);
break;
default:break;
}
break;
case 'f':cout<<"总共找到了"<<findstr(in,fname)<<"个相同的"<<endl;
break;
case 'r':
for(int i=0;i<50;i++)
{
if(fname[i]==' ')
fn2=&sel[i+2];

}
mpos=replace(in,fname,fn2);
cout<<"总共替换了"<<sizeof(mpos)/sizeof(*mpos);
break;
case 'd':
mpos=deletefile(in,fname);
cout<<"总共删除了"<<sizeof(mpos)/sizeof(*mpos);
break;
default: break;
}
}
return 0;
}
//---------------------------------------------------------------------------
bool openfile(FILE *f,char *filename)
{
f=fopen(filename,"r+");
return f;
}

void savefile(FILE *f,char *type,int *p)
{
if(!f)
{
cout<<"操作文件失败 ";
exit(1);
}
int t=sizeof(p)/sizeof(*p); //计算数组有好大?

for(int i=0;i<t;i++)
{
fseek(f,p[i],0);
fputs(type,f);
}

fclose(f);

}

int findstr(FILE *f,char *str)
{
if(!f)
{
cout<<"没有文件,异常退出"<<endl;
return -1;
}
char *temp=new char[strlen(str)];
int count=0;
long int i=0;
while(!fgets(temp,strlen(str),f))
{

if(strcmp(temp,str)==0)
count++;
i++;
fseek(f,i,0);
}

FILE *re;
if((f=fopen("_result.txt","a+"))==NULL)
{

cout<<"没有文件,异常退出"<<endl;
return -1;
}
fputs("-f",re);
fputc(count,re);
fputc('\n',re);
fputc('\n',re);
fclose(re);

delete temp;
return count;

}

int * replace(FILE *f,char *s,char *d)
{
if(!f)
{
cout<<"没有文件,异常退出"<<endl;
return 0;
}
int count=0;
char *temp=new char[strlen(s)];
long int n=0;
while(!fgets(temp,strlen(s),f))
{
n++;
if(strcmp(temp,s)==0)
count++;
fseek(f,n,0);
}
int *pos=new int[count];//记录这些位置
fseek(f,0L,SEEK_SET);//移动指针到开始位置.
int i=0;
n=0;
char *my;
while((my=fgets(temp,strlen(s),f))!=NULL)
{
if(strcmp(temp,s)==0)
{
pos[i]=n;
strcpy(my,d);
}
n++;
fseek(f,n,0);
}

FILE *re;
if((f=fopen("_result.txt","a+"))==NULL)
{
cout<<"没有文件,异常退出"<<endl;
exit(1);
}
fputs("-r",re);
fputc(count,re);
fputc('\n',re);
fputs(d,re);
fputc('\n',re);
fputc('\n',re);
fclose(re);

delete temp;
return pos;

}

int * deletefile(FILE *f,char *s)
{
int *t;
t=replace(f,s,""); //删除其实就是将空字符串替换目的字符串
return t;
}

学过,但不是很懂

呵, 给你做. 不过太简单了呢.

太难了哦?我不懂

好哈。