안녕하세요. 실제로 C 구조체의 원리를 이해하지 못합니다. 내 구조 중 하나에 2 개의 문자열 ('seq'및 'foldedSeq')이 있습니다. 이 문자열은 모두 동일한 차원을 가져야합니다. 그러나 하나를 수정하려고하면 두 번째 문자열은 문자열의 동일한 지정된 위치에서 동일한 수정 사항을 자동으로 가져옵니다. 여기 치명적이지 않은 C 구조체
코드의 흥미 덩어리입니다 :typedef struct MD {
int nb_line;
int nb_colomn;
EM ** matrix;
char * seq; // Initial sequence.
char * foldedSeq;
} MD;
void set_sequences(MD * M, char * seq) {
M->seq = seq;
M->foldedSeq = M->seq; //Purpose: give to foldedSeq the seq dimensions (perhaps it is useless).
printf("seq= %s\tstrlen= %d\nM->seq= %s\nM->foldedSeq= %s\n", seq, strlen(seq), M->seq, M->foldedSeq);
// Up to this point 'seq' = 'foldedSeq'
int i;
for(i = 0; i < strlen(seq); i++) {
M->foldedSeq[i] = '-'; // Original purpose: make 'foldedSeq' string filled with hyphens only.
}
printf("seq= %s\tstrlen= %d\nM->seq= %s\nM->foldedSeq= %s\n", seq, strlen(seq), M->seq, M->foldedSeq);
// Here is the problem: the string 'seq' REALLY IS modified alongside with 'foldedSeq'... WHY? :(
}
내가 쓴 이후 "M-> foldedSeq [내가]"수정해야, 왜 "M-> 서열 [내가]"뿐만 아니라 수정 될 것입니다 ??
내 설명을 읽고 제공 해주셔서 감사합니다. 제 논리는 여기서 막 다른 길을 찾았습니다.
'malloc'다음에'strcpy'가 누락되지 않았습니까? 약자로서 코드는 적절한 크기로 초기화되지 않은 메모리 블록을 제공합니다. – simonc
@imonc 의견은 단지 같은 길이가 아닌 동일한 길이를 원한다고 말합니다. 그리고 즉시'-'로 채 웁니다. – FDinoff
'q'는 무엇입니까?널 종료에 +1이 있었습니까? – Lundin