一个简单的C语言程序纠错

gg882 2009-02-24 10:50:25
这是一个核苷酸配对的程序,我的原文件保存在D:\a.txt 里,我想把翻译后的核苷酸保存在D:\b.txt里
程序可以运行成功,可是为什么没有写入D:\b.txt里呢?
#include <stdio.h>
#include <stdlib.h>
void main()
{

FILE* fp = fopen("D:\\a.txt", "r");
if (NULL == fp)
{
return;
}
FILE* fp2 = fopen("D:\\b.txt", "w");
if (NULL == fp2)
{
return;
}
for (;feof(fp);)
{
char c = fgetc(fp);

if (c == -1)
{
break;
}

if (c == 'A')
{
c = 'T';
}
else if (c == 'T')
{
c = 'A';
}
else if (c == 'C')
{
c = 'G';
}
else if (c == 'G')
{
c = 'C';
}
else
{
fputs("Error input!", stderr);
break;
}

fputc(c,fp2);
}
fclose(fp);
fclose(fp2);
}
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
josephwuxiaameng 2009-02-24
  • 打赏
  • 举报
回复
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fp1("C:\\temp\\a.txt");
if ( fp1.fail())
{
cout<<"cannot open file a"<<endl;
return 1;
}
ofstream fp2("C:\\temp\\b.txt");
if ( fp2.fail ())
{
cout<<"cannot write file b"<<endl;
return 1;
}
for ( ; fp1.end ; )
{
char c = fp1.get ( );
if ( c == -1)
{
break;
}
if (c == 'A')
{
c = 'T';
}
else if (c == 'T')
{
c = 'A';
}
else if (c == 'C')
{
c = 'G';
}
else if (c == 'G')
{
c = 'C';
}
else
{
fputs("Error input!", stderr);
break;
}
fp2.put ( c );
}
fp1.close ();
fp2.close ();
return 0;
}
//我修改了部分代码使他能实现你需要的功能
//注意,输入文件只能包含AGCT且不能有空格和换行,否则会出错
//我对这方面也不是很熟悉,请多包涵!

Sco_field 2009-02-24
  • 打赏
  • 举报
回复
for (;feof(fp);)

-》

for (;!feof(fp);) ?
BeckhamXiao 2009-02-24
  • 打赏
  • 举报
回复
for (;feof(fp);) 改成
for (;!feof(fp);)
然后就OK了

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧