나는이 간단한 C++ 함수를 가지고있다.
문자열에서 '-'문자를 제거해야합니다.
여기에 내가 그 댓글이 명백해 생각하는 코드C++이 내 문자열을 혼합하고 있습니까?
char* FastaManager::stripAlignment(char *seq, int seqLength){
char newSeq[seqLength];
int j=0;
for (int i=0; i<seqLength; i++) {
if (seq[i] != '-') {
newSeq[j++]=seq[i];
}
}
char *retSeq = (char*)malloc((--j)*sizeof(char));
for (int i=0; i<j; i++) {
retSeq[i]=newSeq[i];
}
retSeq[j+1]='\0'; //WTF it keeps reading from memory without this
return retSeq;
}
입니다.
나는 이유는 모르겠지만, 내가 프로그램을 실행하고 결과를 인쇄 할 때 나는 아무 잘못이 있는지 확인하기 위해 코드를 디버깅하려고하면, 나는, 그러나
'stripped_sequence''original_sequence'
뭔가를 얻을 흐름은 올바르게 진행되고 올바른 스트립 된 시퀀스를 반환합니다.
나는 여기에 두 변수의 기억을 인쇄하려고, 메모리 판독 서열에 대한메모리 : retSeq에 대한 http://i.stack.imgur.com/UqVkX.png
메모리 : * 서열에 대한 http://i.stack.imgur.com/dHI8k.png
메모리 http://i.stack.imgur.com/o9uvI.png *의 retSeq에 대한
는메모리 : http://i.stack.imgur.com/ioFsu.png
가 (때문에, 죄송합니다 스팸 필터의 링크/사진을 포함 할 수 없습니다)
이 내가 문자열 이제
for (int i=0; i<atoi(argv[2]); i++) {
char *seq;
if (usingStructure) {
seq = fm.generateSequenceWithStructure(structure);
}else{
seq = fm.generateSequenceFromProfile();
}
cout<<">Sequence "<<i+1<<": "<<seq<<endl;
}
에서 인쇄 사용하고 코드입니다, 나는 무슨 일이 일어나고 있는지에 대해 정말 아무 생각이 없다 에.
char * 대신 std :: string을 사용할 수 있습니까? –
물론 이죠.하지만 여기서 무슨 일이 일어나고 있는지 알고 싶습니다! – XelharK
이것은 유효한 표준 C++가 아닙니다. 표준 C++는 가변 길이 배열을 제공하지 않습니다. – sellibitze