北航考研复试C语言题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要求:字符串的查找删除
给定文件filein.txt 按要求输出fileout.txt。
输入: 无空格的字符串
输出: 将filein.txt删除输入的字符串(不区分大小写),输出至fileout.txt
sample
输入:in
输出:将filein.txt 中的In、IN、iN、in删除,每行中的空格全部提前至行首,输出至fileout.txt 例:
filein.txt中的值为:
#include
int main()
{
printf(" Hi ");
}
输出的fileout.txt为
#clude
tma()
{
prtf("Hi");
}
程序如下:
#include
#include
#include
#define LINE 100
#define MAX 20
void main()
{
FILE *fin,*fout;
char ch;
char s[MAX],tmp[LINE];
int len,space;
int i,j,k;
if((fin = fopen("filein.txt","r")) == NULL)
{
printf("cannot open \"filein.txt\".\n");
exit(0);
}
if((fout = fopen("fileout.txt","w")) == NULL)
{
printf("cannot open \"fileout.txt\".\n");
exit(0);
}
printf("Please input a string less than 20 characters:");
gets(s);
len = strlen(s);
while(!feof(fin))
{
for (i=0;(ch=fgetc(fin))!='\n'&&ch!=EOF;i++)
tmp[i]=ch;
tmp[i]='\0';
space=0;
for (i=0;i { if (tmp[i]==' ') space++; if (strlen(tmp)>=len) { k=i; for (j=0;j { if(tmp[k]==s[j]||tmp[k]-s[j]=='a'-'A'||tmp[k]-s[j]=='A'-'a') k++; else break; } if(j==len) { k=i; for(j=0;j { if (tmp[k+j]==' ') space--; else tmp[k+j]=' '; } i=i+len-1; } } } for (j=0;j fputc(' ',fout); for (i=0;i { if (tmp[i]!=' ') fputc(tmp[i],fout); } fputc('\n',fout); } fclose(fin); fclose(fout); }