언어는 C입니다. char * types (char * array []/char ** array) 배열을 함수 인수로 사용하고 있습니다.이 두 줄을 모두 별도의 줄에 인쇄하려고합니다.인쇄가 성공적으로 끝난 후 printf가 충돌합니다.
while (*array) {
printf("%s\n", *array);
printf("after last print");
array++;
}
지금 어떤 이유로, 특정 입력으로, 그것은 마지막 * 배열이 인쇄 된 후 충돌 즉시 모든 값을 인쇄 관리하지만. 따라서 마지막 printf 이후에는 "마지막 인쇄 후"더 이상 인쇄하지 않습니다. 불행히도, 나는 netbeans C 지원, gdb없이 Windows 7에있어. netbeans에 설치하려고 할 때 몇 가지 문제가 있었지만 또 다른 이야기입니다.
우선 무엇이 원인 일 수 있습니까? 둘째, 어떻게 gdb없이이 동작을 디버깅하려고 할 수 있습니까? 문제를 디버깅하는 데 도움이되는 대답을 제공하고이를 해결하는 방법을 제시한다면, 그 점만으로도 점수를 부여 할 것입니다. 충돌을 일으키는 함수 인수와 관련된 몇 가지 배경 정보 : 필자는 strtok을 사용하여 char * 문자열에서 char ** arr을 생성했습니다. 여기서 공간은 delimeter로 사용되었습니다.
편집 :
일부 자세한 내용은 : 그 같은 함수 내 마지막 * 배열의 printf하려고하면 잘 작동하고, 프로그램이 정상적으로 계속. 그럼이 작품은 :
printf("%s\n", array[4]);
마지막 인덱스가 내 테스트 케이스에 4 일이 발생합니다. 그러나 이전과 같이 루프 내에서 동일한 작업이 수행되면 printf가 처리되지만 두 번째 줄을 더 이상 인쇄하지 않으면 바로 충돌합니다.
마지막 배열 요소가'NULL' 포인터로 설정되지 않았을 가능성이 큽니다. 'array [n] = NULL;'과 같은 것이 필요할 것입니다. 여기서'n'은 문자열의 수입니다. 물론 '배열'은 'n + 1'요소를위한 공간이 필요합니다. –