猜拳游戏c语言代码流程图,这是一个猜拳游戏的程序 大家有更好的解决方法么?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include 

/* 显示程序的使用方法 */

void help()

{

printf("Usage : \nFind and/or replace a string in a text file\n");

printf("Syntex : \nFREP   [replace string]\n");

exit();

}

/* 查找指定文件中的字符串 */

void find(flnm,searchstr)

char *flnm,*searchstr;

{

char str1[256];

unsigned int i,l;

FILE *f1;

if ((f1 = fopen(flnm,"r"))==NULL) {

printf("File not found !\n");

help();

}

l = 0;

do {

fgets(str1,256,f1); /* 从文件中读取一行 */

++l;

if (strstr(str1,searchstr)!=NULL) /* 有待查找的字符串吗? */

printf("[%s] Line : %d %s",flnm,l,str1); /* 显示该行内容 */

} while (! feof(f1));

fclose(f1);

}

/* 查找指定文件中的字符串,并替换 */

void replace(flnm,searchstr,replacestr)

char *flnm,*searchstr,*replacestr;

{

char str1[256],str2[256];

char *p1,*p2,*p3;

FILE *f1,*f2;

unsigned int i,fslen,i1,i2,i3;

char path[80],drive[3],dir[66],name[10],ext[5];

if ((f1 = fopen(flnm,"r"))==NULL) {

printf("File not found !\n");

help();

}

if ((f2 = fopen("temp","w+"))==NULL) {

printf("File not opened !\n");

help();

}

fslen=strlen(searchstr);

do {

fgets(str1,256,f1); /* 从文件中读取一行 */

i1=strlen(str1);

p1=str1;

p3=str2;

while (strstr(p1,searchstr)!=NULL) { /* 查找的字符串在该行中吗? */

p2 = strstr(p1,searchstr);

i2=strlen(p2);

i3=i1-i2;

p1+=i3;

for (i=0;i

while (*p3++ = *replacestr++); /* 复制替换字符串 */

p3-=1;

p1+=fslen;

}

while ((*p3++=*p1++)!='\0'); /* 复制该行中剩余的字符 */

fputs(str2,f2); /* 写文件 */

strcpy(str2,"");

} while (!feof(f1));

fclose(f1);

fclose(f2);

fnsplit(flnm,drive,dir,name,ext);

strcat(strcpy(str1,name),".bak");

if ((f1=fopen(str1,"r"))!=NULL) unlink(str1);

if (rename(flnm,str1)!=0) /* 原文件改名为同名的BAK文件 */

printf("Error : File [%s] cannot be not renamed to file [%s] !\n",flnm,str1);

else if (rename("temp",flnm)!=0) /* 将临时文件改名为原文件名 */

printf("Error : File [temp] cannot be not renamed to file [%s] !\n",flnm);

}

/* 主程序 */

main(argv,argc)

int argv;

char *argc[];

{

char *flnm,*searchstr,*replacestr;

unsigned int findb=0,replaceb=0;

printf("%s","FREP Version 1.1, Copyright (C) 1994,95 Dong Zhanshan\n");

switch (argv) {

case 3 : flnm = argc[1]; /* 查找字符串 */

searchstr = argc[2];

findb = 1;

break;

case 4 : flnm = argc[1]; /* 替换字符串 */

searchstr = argc[2];

replacestr = argc[3];

replaceb = 1;

break;

default : help();

}

if (flnm == "") help();

if (findb) find(flnm,searchstr);

if (replaceb) replace(flnm,searchstr,replacestr);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值