2013-07-13 2 views
0

여러분!C++ 문자열 역방향 오류

간단한 char * 문자열을 쓰고 있습니다. 그리고 입력 배열을 포인터로 초기화 할 때 라인 src[k] = src[n - k];에 쓰기 액세스 오류가 있습니다. char * input = "string". 그리고 고정되어 있습니다. char input [] = "string"; 그것은 나를 위해 매우 흥미 롭습니다, 왜 그것이 포인터와 함께 작동하지 않습니다. 고마워요!

void reverse(char* src) { 
    if (src == NULL) { 
     return; 
    } 
    size_t n = strlen(src) - 1; 
    char swap; 
    for (int k = 0; k <= n/2; k++) { 
     swap = src[k]; 
     src[k] = src[n - k]; 
     src[n - k] = swap; 
    } 
    src[n + 1] = '\0'; 
} 
+0

'char * input = "string";'(* 오류 * 또는 적어도 * 경고 * 형태로) 진단하지 않고 C++ 11에서는 컴파일되지 않습니다. – Nawaz

+0

@Nawaz, 나는 그것이 오류를 줄 것이라고 생각. – chris

+0

@chris - 오류를 생성하는 데 필요한 유일한 것 (컴파일러가 코드 컴파일을 거부 함)은 # 오류 지시어입니다. 일반적으로 컴파일러는 "진단"을 실행 한 후 컴파일을 계속하고 원하는 의미로 코드를 제공해야합니다. 이것이 컴파일러에 특화된 확장 기능입니다. –

답변

4

그것은 포인터 점 때문에 문자 "string" 포인터와 함께 작동하지 않습니다
다음은 내 코드입니다. 문자열 리터럴은 수정할 수 없습니다. 배열을 사용하면 리터럴이 배열에 복사되며 수정할 수 있습니다.