当前位置:文档之家› 北航考研复试C语言题

北航考研复试C语言题

要求:字符串的查找删除
给定文件filein.txt 按要求输出fileout.txt。

输入: 无空格的字符串
输出: 将filein.txt删除输入的字符串(不区分大小写),输出至fileout.txt
sample
输入:in
输出:将filein.txt 中的In、IN、iN、in删除,每行中的空格全部提前至行首,输出至fileout.txt 例:
filein.txt中的值为:
#include <stdio.h>
int main()
{
printf(" Hi ");
}
输出的fileout.txt为
#clude<stdio.h>
tma()
{
prtf("Hi");
}
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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<strlen(tmp);i++)
{
if (tmp[i]==' ') space++;
if (strlen(tmp)>=len)
{
k=i;
for (j=0;j<len;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<len;j++)
{
if (tmp[k+j]==' ')
space--;
else
tmp[k+j]=' ';
}
i=i+len-1;
}
}
}
for (j=0;j<space;j++)
fputc(' ',fout);
for (i=0;i<strlen(tmp);i++)
{
if (tmp[i]!=' ')
fputc(tmp[i],fout);
}
fputc('\n',fout);
}
fclose(fin);
fclose(fout);
}。

相关主题