학교에서 다른 곳에서 문자열을 뒤집어야하는 문제를 해결하려고합니다. 나는 Visual Studio에서 단계별 때 루프 내부 선에 도달 할 때문자열 요소를 복사하려고 할 때 세그먼테이션 오류가 발생합니다. (C)
void strRev(char*s)
{
int i = 0;
int length = strlen(s);
char*rev = (char*)malloc((length+1)*sizeof(char));
strcpy(rev,s);
for(i;i<length;i++)
s[i] = rev[length - 1 - i];
printf("%s %s",rev,s);
}
int main()
{
char * test = "hello";
strRev(test);
}
, 그것은 응답 : 여기 ... 잠시이 고민과 아이디어에서 생각 된 것은 내 코드입니다. 유닉스는 나에게 세그먼트 결함을 준다. 이게 내가 누락 된 단순한 것이어야한다는 것을 알지만, 나는 아이디어가 없으며 온라인 답변이 도움이되지 않는다. 그리고 나는 시간이 없어 .. 누군가 나에게 계몽 해줘, 내가 뭘 잘못하고있어?
만약 당신이 * malloc()을 사용한다면 함수에서 돌아 오기 전에 리턴 된 포인터를 free()해야한다는 것을 명심해야한다. –
고맙습니다 .. 위와 같이 테스트 선언을 변경했는데 현재 작동합니다. 강사가 구체적으로 문자열을 선언 할 수 있다고 가르쳐 왔으며, 첫 번째 문자가 대 문자에 대한 포인터를 만듭니다. 수정 될 수있는 배열 .. 나는 내일 수업 시간에 그것을 가지고 올 것이다. –