programing

부분 문자열의 길이를 계산할 때 "오른쪽-왼쪽+2)"의 의미는 무엇입니까?

kingscode 2022. 9. 8. 23:00
반응형

부분 문자열의 길이를 계산할 때 "오른쪽-왼쪽+2)"의 의미는 무엇입니까?

토큰을 검출하기 위한 프로그램을 C에 설계하고 있습니다.

네 번째 줄에서 헷갈렸어요.의 개요(right-left+2)할 수 있을까?

char* sub_string(char* str, int left, int right)
{
    int i;
    char* sub_str = (char*) malloc(sizeof(char)*(right-left+2)); /* 4th line */
}

right-left+2이 경우라면right-left+1+1.
어디에righ-left왼쪽은 세지 않고 왼쪽부터 오른쪽까지의 길이입니다.따라서 1 + 1 입니다.
다른 +1은 공백 문자를 하나 더 만들기 위한 것으로, 끝은 0이 추가될 가능성이 높습니다.

그런데 함수에 클린이 없습니다.return진술.

예: (David C에게 감사합니다.)예제의 아이디어에 대한 순위 부여)"this"이내에"more this than that":

more this than that
0    5  8

't'에 있다left5, 그's'에 있다right8. 의 길이"this"는 분명히 4입니다(터미네이터 0은 카운트되지 않습니다).하지만 8-5는 3밖에 안 돼요그래서 하나를 사용하세요.+1추가 문자를 포함하다't'누락...)

이 서브스트링이 malloced 메모리에 포인터를 통해 반환되는 경우, 이것이 함수의 나머지(누락)가 해야 할 일이라고 생각합니다.malloced 메모리에 0 터미네이터를 포함해야 합니다.이를 위해서는 다른 메모리 문자를 malloce로 해야 합니다.+1.

언급URL : https://stackoverflow.com/questions/73593965/what-is-the-meaning-of-the-2-in-calculating-the-length-of-a-substring-as-right

반응형