| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:请教取字符串问题!
只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:40 回复次数:13 
请教取字符串问题!
GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
GCCTAAGCCTAAAAAATTGAGATAAGAAAACATTTTACTTTTTCAAAATTGTTTTCATGCTAAATTCAAA
ACGTTTTTTTTTTAGTGAAGCTTCTAGATATTTGGCGGGTACCTCTAATTTTGCCTGCCTGCCAACCTAT
ATGCTCCTGTGTTTAGGCCTAATACTAAGCCTAAGCCTAAGCCTAATACTAAGCCTAAGCCTAAGACTAA
GCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAATACTAAGCCT
AAGCCTAAGACTAAGCCTAAGCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAATACTAAGCCTAAGC
CTAAGACTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAA
GCCTAAAAGAATATGGTAGCTACAGAAACGGTAGTACACTCTTCTGAAAATACAAAAAATTTGCAATTTT
TATAGCTAGGGCACTTTTTGTCTGCCCAAATATAGGCAACCAAAAATAATTGCCAAGTTTTTAATGATTT
GTTGCATATTGAAAAAAACATTTTTCGGGTTTTTTGAAATGAATATCGTAGCTACAGAAACGGTTGTGCA
CTCATCTGAAAGTTTGTTTTTCTTGTTTTCTTGCACTTTGTGCAGAATTCTTGATTCTTGATTCTTGCAG
AAATTTGCAAGAAAATTCGCAAGAAATTTGTATTAAAAACTGTTCAAAATTTTTGGAAATTAGTTTAAAA
ATCTCACATTTTTTTTAGAAAAATTATTTTTAAGAATTTTTCATTTTAGGAATATTGTTATTTCAGAAAA
TAGCTAAATGTGATTTCTGTAATTTTGCCTGCCAAATTCGTGAAATGCAATAAAAATCTAATATCCCTCA
TCAGTGCGATTTCCGAATCAGTATATTTTTACGTAATAGCTTCTTTGACATCAATAAGTATTTGCCTATA
TGACTTTAGACTTGAAATTGGCTATTAATGCCAATTTCATGATATCTAGCCACTTTAGTATAATTGTTTT
TAGTTTTTGGCAAAACTATTGTCTAAACAGATATTCGTGTTTTCAAGAAATTTTTCATGGTTTTTCTTGG
TCTTTTCTTGGTATTTTTTTGACAAAAATTTTTGTTTCTTGATTCTTGCAAAAATTTTTCCGTTTGACGG
CCTTGATGTGCACTACCTTCGCTTAAATACTACATTTTCTGAAAATGTTATAATAGTGTTCATTGTTTCA
TACAAATACTTATTTAATAGTATTTCTGGTTATATAATTTGTATAAAAAGTGGTTGACATAACAAGGCTG
ACGAAACTTTGTGATGGCTGAAAATATTTTCCTAGCTTTATTGATTTTTATTTATACGTGTTTGAATAAC
TTGGCCAAATCGCCGAGAAGGAATAGAATACTGGACGACATTGTACATATTTTCCAAAAAATCAGAAAGT
AGATGACGGGACCAATTCTTTCTGTCAGGTTTTACAACCGCCCAGTGCGTCTACGTCACATGTTGTATAA
ATGGTTGTAAACAATATGCGGAAACAATCAAATGCATTCCCATAAGGCATAATATAGAGGCTACAGGCAA
TGAGTATCGCTCTTTGCTTTGTTTAAAGGGGGAGTAGAGTTTGTGGGGAAATATATGTTTCTGACTCTAA
TTTTGCCCCTGATACCGAATATCGATGTGAAAAAATTTAAAAAAATTTCCCTGATTTTATATTAATTTTT
AAAATCCGAAAATCCATTGGATGCCTATATGTGAGTTTTTAAACGCAAAATTTTCCCGGCAGAGACGCCC
CGCCCACGAAACCGTGCCGCACGTGTGGGTTTACGAGCTGAATATTTTCCTTCTATTTTTATTTGATTTT
ATACCGATTTTCGTCGATTTTTCTCATTTTTTCTCTTTTTTTTGGTGTTTTTTATTGAAAATTTTGTGAT
TTTCGTAAATTTATTCCTATTTATTAATAAAAACAAAAACAATTCCATTAAATATCCCATTTTCAGCGCA
AAATCGACTGGAGACTAGGAAAATCGTCTGGAGATAGAACGGATCAACAAGATTATTATTATATCATTAA
TAATATTTATCAATTTTCTTCTGAGAGTCTCATTGAGACTCTTATTTACGCCAAGAAATAAATTTAACAT
TAAAATTGTTCATTTTTGAAAAAAAAATAATTAAAAAAACACATTTTTTGGAAAAAAAAATAAATAAAAA
AAATTGTCCTCGAGGATCCTCCGGAGCGCGTCGAATCAATGTTTCCGGAACTCTGAAAATTAAATGTTTG
TATGATTGTAGAACCCTTTCGCTATTGAGATTTGATAACTTTTAAGTAATAAAATTTTCGCAGTAAGACA
TTAAAACATTTCACAATTAAGCTGGTTCTGAACTGTGTGAAGTATATTGAAAAAAACTAACTGATACAAA
AATATAATTTTATGATAGTTTTCTGGATGTCCCAATATAAACGATGTCAATTCTGCGACATGCTACAGTC
ATCCACGAAAGTAACCCGAATACCGACAAAAGAAGAGGAACGCCAACTTTGGATAGACGCTCTAGGGGCT
GATTTTGGTCGGAAAATAGTCGGGAAAAAATAGAGGACATTACAGATGAGGATGAGGATGAAGATAGAAA

这是一段字符串,
现在我要取以下数字间的字符串
14  ---   19
29  ---  37
58  ---  79
109  ---  336
669  ---  709
1401  ---  1786
2199  ---  2687
2199  ---  2687

这是我编的程序,但得不到结果,请指教!!!!
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
void main()
{
int i,j,m=0,h[20];
char str[4000],stw[1000];
FILE *in,*fp,*out;
in=fopen("E:\\测试文件1\\sesult.txt","r");
fp=fopen("E:\\测试文件1\\qingkuang.txt","r");
out=fopen("E:\\测试文件1\\结果.txt","w");
while(!feof(in))         //feof判断文件是否结束,结束返回0
fgets(str,4000,in);       //将in文件中的4000个字符复制到str数组中   
while(!feof(fp))
fread(h,4,20,fp);       //从fp文件中读取20个4个字节的数据到h数组中
for(i=0;i<20;i+=2)
   for(j=h[i]-1;j<h[i+1];j++)
   {
    if(h[i]!=h[i-2])       //因为有数据重复的,故删除掉,不要重复复制
    stw[m]=str[j];
    m++;
   }
fprintf(out,"%s\n",stw);
fclose(out);
}
这是我编的程序,但得不到结果,请指教!!!!
搜索更多相关主题的帖子: 字符串 
2013-03-04 11:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
看不懂你在说什么
2013-03-04 12:25
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 2楼 rjsp
最上面是一段字符串,这段字符总数至少也有3000了,
现在我要在这3000个字符中取出上面说明的数字间的字符,当然有8段数据区间,我们去8段字符连接起来。


但现在程序运行不出结果来,求救!!
2013-03-04 12:52
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:40 
程序代码:
#include <stdio.h>

FILE *fp = NULL;
void Out(int a, int b)
{
    fseek(fp, a-1, 0);
    while (a++ <= b)    putchar( fgetc(fp) );
    puts("\n");
}
int main()
{
    if (!(fp = fopen("test.txt", "r")))
    {
        puts("文件打开失败!");
        return 0;
    }
    Out(14, 19);
    Out(29, 37);
    Out(58, 79);
    Out(109, 336);
    Out(669, 709);
    Out(1401, 1786);
    Out(2199, 2687);
    fclose(fp);
    return 0;
}


[fly]存在即是合理[/fly]
2013-03-04 13:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
学习小黑同学

本来也想贴代码来着  但是没有小黑同学的简洁  就算了

DO IT YOURSELF !
2013-03-04 13:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用zhou31146001在2013-3-4 12:52:02的发言:

最上面是一段字符串,这段字符总数至少也有3000了,
现在我要在这3000个字符中取出上面说明的数字间的字符,当然有8段数据区间,我们去8段字符连接起来。


但现在程序运行不出结果来,求救!!
结合别人的代码,并猜测,我想你要的不是“数字间的字符”,因为不存在你说的那些“数字”。你要的是各数字所指明位置间的字符。这一点我不怪你,但你完全可以用一个简单的输入输出来说明。
仍然是猜测 --- 因为你还没有说明这些数字是base 0,还是base 1的;字符是否包括行间的回车;回车位置是否固定?等等 --- 一个可能的问题示例是这样:
对于如下内容的文本文件(在任意处可能还有回车)
GCCTAAGCCT
AAGCCTAAGCTG
CTAAGCCTA
给定一系列位置索引对(base 0;并且ACGT之外的字符,当然这包含了忽略回车字符;索引对前开后闭),求各位置索引对间字符串的连接字符串。
如给定
3-11
13-17
2-5
则输出 TAAGCCTACCTACTA
2013-03-04 15:04
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
学习文件处理

www.qunxingw.wang
2013-03-04 15:33
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 4楼 azzbcc
老大,拜托您帮我改成一个将结果存入文件的程序可以吗,
因为我只是列出了一小段的字符区间,实际上要取得字符区间成百上千,而且取出的字符串要放在文件里,
拜托您了,刚才我想按您的改一下,但能力有限,我怎么改都改不对了!!!!
谢谢!!!!!
2013-03-04 17:10
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
对于 6楼梯处的问题,情楼主慎重对待,

fseek函数把换行当做两个字符处理了,如果不需要换行,这道题还可以从每行长度固定这一点找到规律,然后加一些数学运算;要是没有规律的文档,就要考虑别的方法了

文件写入函数 int fputc (int n, File *fp)


[fly]存在即是合理[/fly]
2013-03-04 17:24
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 9楼 azzbcc
文件没有规律,可能如你说的每行个数非恒定,
另外您给的文件输入函数我有些看不懂,怎么套进去呢?
非常不好意思,谢谢!!!!
2013-03-04 17:42
快速回复:请教取字符串问题!
数据加载中...
 
   



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

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