| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:求帮忙解决一下字符串前后翻转问题!
取消只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:20 回复次数:4 
求帮忙解决一下字符串前后翻转问题!
#include"stdio.h"
#include"stdlib.h"           
FILE *in,*out;
void main()              
{         
 int i=0,sum;
 static char zifu,str[55000000];
 in=fopen("F:\\寻找内含子序列\\内含子串联负序列.txt","rt");        //第12行
 out=fopen("F:\\寻找内含子序列\\收获1.txt","wt");     
 while(!feof(in))
 {
   str[i]=fgetc(in);
   i++;
 }
 for(i=0;i<SUM 2;i++)
    {
       zifu=str[i];
       str[i]=str[sum-1-i];
       str[sum-1-i]=str[i];     //第一个与最后一个、第二个与倒数第二个等替换   
    }
  for(i=0;i<SUM;I++)
   {
      if(str[i]=='A')
      {
       str[i]='T';
       continue;     //加continue表明完成操作后继续循环,不执行下面的;要加{}否则不管第一个if是否成立执行continue继续循环
      }
      if(str[i]=='T')
      {
       str[i]='A';
       continue;
      }
      if(str[i]=='C')
      {
       str[i]='G';
       continue;
      }
      if(str[i]=='G')
      str[i]='C';
   }
    sum=i;
  for(i=0;i<SUM;I++)
  fputc(str[i],out);
  fclose(in);
  fclose(out);

}
内含子串联负序列.rar (762.61 KB)

 上面的程序用来把文件中2813952个碱基长的字符串前后翻转一下,即第一个成最后一个,最后一个成第一个等,翻转过来之后,在对所有字符进行A换成T、T换成A、C换成G、G换成C的操作。
但现在程序运行不畅,总有小问题,同时运行很慢
搜索更多相关主题的帖子: 倒数 内含子 字符串 include 
2013-07-04 13:49
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 2楼 rjsp
您好,首先谢谢您的帮助!另外想问一下,运行后出现了下述错误提示,我尝试改了改,总不对,所以又要麻烦您了,谢谢!!!
error C2440: '=' : cannot convert from 'void *' to 'char *'
        Conversion from 'void*' to pointer to non-'void' requires an explicit cast
执行 cl.exe 时出错.

还有,这个程序在字符串长度为几千万甚至几亿时能运行吗?另外字符串的前后翻转是那部分完成的呀,是那三个fseek吗?
谢谢!!!
2013-07-05 12:09
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 2楼 rjsp
不好意思,忘了说明字符串中还有N字符,当然这个字符只需要按位置前后翻转就行了,它不用再进行A换成T的那种转换。
谢谢!!
2013-07-05 12:13
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 5楼 rjsp
你好,我使用vc6.0运行的程序,这个是适合C语言的吧!如果像您说的那样,应该怎么改呀?非常谢谢!!!
2013-07-05 12:59
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
你好,大侠,我写的那个程序,即一楼的那个程序是用C写的,另外我又写了一个,作用跟那个是一样的,有些地方也不完善,请您指教!!
#include"stdio.h"
#include"stdlib.h"           
FILE *in,*out;
int main()              
{         
 long int i,sum=52248967;
 static char str[55000000];
 char zifu;
 in=fopen("F:\\寻找内含子序列\\内含子串联负序列.txt","rb");        //第12行
 out=fopen("F:\\寻找内含子序列\\收获1.txt","wb");     
 fgets(str,sum+1,in);
 for(i=0;i<sum/2;i++)
    {
       zifu=str[i];
       str[i]=str[sum-1-i];
       str[sum-1-i]=str[i];     //第一个与最后一个、第二个与倒数第二个等替换   
    }
   for(i=0;i<sum;i++)
   {
      if(str[i]=='A')
      {
       str[i]='T';
       continue;     //加continue表明完成操作后继续循环,不执行下面的;要加{}否则不管第一个if是否成立执行continue继续循环
      }
      if(str[i]=='T')
      {
       str[i]='A';
       continue;
      }
      if(str[i]=='C')
      {
       str[i]='G';
       continue;
      }
      if(str[i]=='G')
      str[i]='C';
   }
  fputs(str,out);
  fclose(in);
  fclose(out);
}
2013-07-05 13:04
快速回复:求帮忙解决一下字符串前后翻转问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025241 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved