C 구문이 새로워서 어쩌면 그냥 벙어리 오류가 발생했을 것입니다. 똑같은 프로세스를 사용하여 strcat() 함수를 직접 구현하려고합니다. 내 모방 자 함수는 strcat406()입니다.세그먼트 화 오류,하지만 무한 루프가 없습니다 ... 내 생각 엔
프로그램을 실행하려고 할 때 오류로 계속 세그먼트 화 오류가 발생합니다.
EDIT : strcat406()의 첫 번째 while 루프는 strlen() 함수를 둘러보기위한 제 시도입니다. 내장 된 작업을 사용하지 않으려 고합니다.
EDIT2 : 좋아요, 사람들이 지적했듯이 '\ n'을 '\ 0'으로 바꿨습니다. 멍청한 실수. 그런 다음 'string1 [i] = string [i]'를 제거하여 전체를 수정했습니다. 이렇게하면 첫 번째 루프가 i (문자열 1의 길이)를 결정하기 위해 반복되고, 두 번째 while 루프에서는 string1에 string2가 추가됩니다. 아래 코드의 수정.
#include <stdio.h>
char *strcat406(char string1[ ], char string2[ ]) {
int i = 0, j = 0;
while (string1[i] != '\0') { //replaced '\n' with '\0'
//removed: string1[i] = string1[i];
i++;
}
while (string2[j] != '\0') { //replaced '\n' with '\0'
string1[i+j] = string2[j];
j++;
}
string1[i+j] = '\0';
return string1;
}
int main() {
char str1[81], str2[81];
char again = 'y', newline;
while (again == 'y') {
printf("Enter a string\n");
scanf("%s", str1);
printf("Enter another string\n");
scanf("%s", str2);
printf("The concatention is %s\n", strcat406(str1, str2));
printf("Second test: The concatenation is %s\n", str1);
printf("The second string is still %s\n", str2);
printf("Again? (y/n)\n");
scanf("%c%c", &newline, &again);
}
}
무엇이'string1 [i] = string1 [i];'입니까? 오히려 불필요한 것 같습니다 ... 또한 segfaults 반드시 무한 루프의 결과가 아닙니다 : 그것은 일반적으로 당신이 소유하지 않은 메모리 액세스/수정 때문입니다. 문자열을 다 사용하지 않았는지 확인하십시오. – Kninnug
어떻게 1의 공간에서 2 문자 배열을 연결할 수 있습니까? – cppcoder
@cppcoder : 현재 하나는 포함하고 있지만 두 개를 모두 포함 할 수있는 버퍼에는 2 개의 문자열을 연결해야합니다. – Deduplicator