我有这个程序应该找到一个由3个字符组成的字符串,比如说“abc”到一个更长的字符串中说“aabccbd”,然后用另一个字符(比如'd')替换原来的字符串。所以。鉴于这些字符串,结果将是:
aabcabcd
adabcd <<-- another iteration
addd <<-- Final result
我写了一些代码行我相信解决了替换给定序列的问题(仍然没有编写替换字符)。但问题是当我用给定的char替换序列时,序列之前的char被删除。 例如:
aabcabcd
dabcd <<-- Incorrect
可能出现什么问题?请检查我的代码。使用以下格式从.txt文件中读取序列:
a b c d
&lt; - 序列和交换字符。 (序列总是3个字符长)
abcdefakxoqp333
&lt; - 我应该搜索序列的完整字符串。
Code:
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
char* gen = new char[3];
char simp;
char dna[10001];
int main() {
int len;
//Reading file and assigning values.
FILE *input = fopen("input.txt","rt");
fscanf(input,"%c %c %c %c",&gen[0],&gen[1],&gen[2],&simp);
fscanf(input,"%s",&dna);
fclose(input);
len = strlen(dna);
//In this part dna has the 2nd line of input.txt
for(int i=0;i<len;i++){
cout << dna[i];
}
cout << endl;
//Searching for coincidences.
int dnaLen = len; //dna Lenght, this one will change over time.
bool found=false;
int index=0; //Index will be reseted as well when we make a change!!
while(index<dnaLen-2) {
cout << "Entering WHILE with index=" << index << "\n";
cout << "Examining: " << dna[index] << dna[index+1] << dna[index+2] << endl;
if(dna[index]=gen[0] && dna[index+1]==gen[1] && dna[index+2]==gen[2]){
//Replace dna[index] for simp AND displace the dna array
dna[index]=simp;
for(int i=0;i<dnaLen;i++){
cout << dna[i];
}
cout << endl;
index =0;
dnaLen=dnaLen-2;
}
index++;
}
return 0;
}
我知道我可以尝试使用正则表达式,问题是我对C ++ 11的使用有所限制。 我也知道我可以使用string::replace但是这段代码有什么问题?谢谢!
答案 0 :(得分:2)
这不是比较,而是分配,将=
替换为==
if(dna[index]=gen[0]...