내 C 코드의 문제점을 이해하는 데 도움이 필요합니다. 문자 반복없이 주어진 문자열 내에서 가장 긴 하위 문자열을 찾으려고합니다.런타임 오류 메시지 : 17 행 : 'int [256]'유형의 인덱스 -3 초과
런타임 오류 메시지 : 행 17 : leetcode 플랫폼에서 실행하면, 아래의 코드는 문자열
"amqpcsrumjjufpu"
나에게 오류를 제공 인덱스 -3 유형의 범위를 벗어 'INT [256]'
그러나 내 컴퓨터 또는 온라인 편집기에서 실행할 때 동일한 코드가 올바르게 작동합니다. 이 행동 차이를 이해하도록 도와주세요.
#include <stdio.h>
#include <string.h>
int lengthOfLongestSubstring(char* s) {
char *h = s;
int A[256] = {0};
int length = 0;
int temp = 0;
int max = 0;
int len = strlen(s);
for(int i = 0; i < len;i ++){
int A[256] = {0};
length = 0;
h = s + i;
for(int j = i; j < len-1; j++){
if (A[h[j]] == 1) {
break;
} else {
A[h[j]] = 1;
length +=1;
}
if (max < length) {
max = length;
}
}
}
return max;
}
int main() {
char *s = "amqpcsrumjjufpu";
int ret = lengthOfLongestSubstring(s);
printf("SAURABH: %d",ret);
}
분명히 어떤 시점에서 배열의 색인 -3에 액세스하려고합니다. 디버깅을해야합니다. –
'char'는 서명 된 타입이므로 문자 0xFC는 -3으로 해석됩니다. 'uint8_t * h = (uint8_t *) s;' –
@Saurabh dubey 형식 char cab는 signed char 또는 unsigned char로 동작합니다. 따라서 명시 적으로 h [j] 표현식을 unsigned char 유형으로 변환해야합니다. 예를 들어, A [(unsigned char) h [j]] = 1; –