【求高人解答c语言】 编程只保留一个空白符0
dvzv59632014.12.06浏览4次分享举报
【问题描述】写一程序将一个文件fcopy.in拷贝至另一个文件fcopy.out,其中在所拷贝的文件中,多个连续空白符(包括空格符、制表符)只拷贝一个空格符,其它字符不变。【输入形式】源文件... 【问题描述】
写一程序将一个文件fcopy.in拷贝至另一个文件fcopy.out, 其中在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符, 其它字符不变。
【输入形式】
源文件名和目标文件名分别为fcopy.in和fcopy.out,程序将从当前目录下读取fcopy.in文件。
【输出形式】
将fcopy.in文件内容拷贝至当前目录下的fcopy.out文件中。在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符,若非空白符之间有一个制表符,则该制表符也要替换为空格符,其它字符不变。
【输入样例】
假如文件fcopy.in中内容如下:
Alcatel provides end-to-end solutions.
【输出样例】
输出文件fcopy.out中内容为:
Alcatel provides end-to-end solutions.
我编的程序只能部分通过测试数据,求问题在哪里???
#include
int main()
{
FILE*in,*out;
char c,d;
in=fopen("fcopy.in","r");
out=fopen("fcopy.out","w");
if(in==NULL)
{
perror("can't open fcopy.in");
return -1;
}
if(out==NULL)
{
perror("can't open fcopy.out");
return -1;
}
while((c=fgetc(in))!=EOF)
{
if(c=='\t' || c=='\v')
fputc(' ',out);
else if(c==' ')
{
if((d=fgetc(in))==' '|| d=='\t')
{
c=d;
continue;
}
else
{
fputc(' ',out);
fputc(d,out);
}
}
else
fputc(c,out);
}
fclose(in);
fclose(out);
return 0;
} 展开