云墨墨 2017-06-03 07:31 采纳率: 0%
浏览 2608

关于C语言字符替换的问题

/*【问题描述】
写一程序将一个文件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.
【样例说明】
将文件fcopy.in拷贝到fcopy.out,同时做适当的转换。
【评分标准】
其中在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符,其它字符不变,完全符合要求得20分,每个测试点4分。提交程序名为copy.c。

*/

#include
#include
#include
#include
#define N 100
void Fgets(char *s,FILE *p);
void DelSpacce(char *s1,char *s2);
void Fputs(char *s2,FILE *fp);
int main()
{
char s1[N],s2[N];
FILE *fp;
fp=fopen("fcopy.in","r");
Fgets(s1,fp);
//puts(s1);
DelSpacce(s1,s2);

strcpy(s2,s1);
fp=fopen("fcopy.out","w");
Fputs(s2,fp);
//puts(s2);
return 0;

}
void Fgets(char *s,FILE *fp)
{
if(fp==NULL)
{
printf("Failure to open fcopy.in!");
return;
}
fgets(s,N,fp);
fclose(fp);
return;
}
void DelSpacce(char *s1,char *s2)
{
int i,j;
for(i=0;s1[i]!=0;i++)
{
if(isspace(s1[i]))
{
strcpy(&s2[i]," ");
j=i+1;
while(isspace(s1[j]))
{
strcpy(&s1[j],&s1[j+1]);
}
}else
{
strcpy(&s2[i],&s1[i]);
}

}

}
void Fputs(char *s2,FILE *fp)
{
if(fp==NULL)
{
printf("Failure to open fcopy.out!");
return;
}
fputs(s2,fp);
fclose(fp);
}

不知道哪里出了错。。。但交上去作业就是错的。。。

  • 写回答

3条回答 默认 最新

  • SuperKilling 2017-06-03 11:24
    关注

    fgets can only get one line in a file.

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型