C 문자열 조작 (특수 char * tail 자르기)

JasonLi

여기서 "cd fjadf"를 얻을 수없는 이유는 무엇입니까?
그리고 프로그램은 항상 나에게Bus error: 10...

super_cut_tail()기능 을 사용 ///fjdakf하여 사용자가 지정한 을 차단 하고 싶습니다 . 그런데 왜이 기능이 그것을 달성 할 수 없습니까?

char* super_cut_tail(char *char_arg, char *special) {
    char *special_ptr;
    special_ptr = strstr(char_arg, special);
    int len = (int)strlen(char_arg) - (int)strlen(special_ptr);
    char_arg[len] = '\0';
    char_arg = strdup(char_arg);
    return char_arg;
}

int main(int argc, char * argv[])
{
    char *test = "cd fjadf///fjdakf";
    char *outcome;
    outcome = super_cut_tail(test, "///");
    printf("test: %s\n", test);

    return 0;
}
R 사후

초기화에 사용 된 문자열을 수정하기 때문에 프로그램이 정의되지 않은 동작을 나타냅니다 test. 사용할 때 :

char *test = "cd fjadf///fjdakf";

"cd fjadf///fjdakf"프로그램의 읽기 전용 메모리에 보관됩니다. 라인에서 수행중인 해당 문자열 수정

char_arg[len] = '\0';

정의되지 않은 동작의 원인입니다.

사용하다:

char test[] = "cd fjadf///fjdakf";

다른 방법은 다음을 사용하는 것입니다.

char const* test = "cd fjadf///fjdakf";

super_cut_tail수정을 시도하기 전에 먼저 문자열을 복사 하십시오.

char* super_cut_tail(char const* char_arg, char *special) {
    char* ret_string = strdup(char_arg);
    char *special_ptr;
    special_ptr = strstr(ret_string, special);
    int len = (int)strlen(ret_string) - (int)strlen(special_ptr);
    ret_string[len] = '\0';
    return ret_string;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++, char * 문자열 수정

분류에서Dev

(C 만) 문자열 char에서 16 진수로 특수 문자 변환

분류에서Dev

C-char * 템플릿은 특수한 유형의 문자열입니까?

분류에서Dev

조건자를 사용하여 특정 문자 (C #)로 시작하는 문자열 찾기

분류에서Dev

문자열에서 시작 문자 및 특수 문자 찾기

분류에서Dev

c에서 char 문자열 숨기기

분류에서Dev

C에서 문자열 배열 조작

분류에서Dev

C # 문자열을 16 진수 코드로 조작합니까?

분류에서Dev

SQL 문자열에서 특수 문자 자르기

분류에서Dev

char c가 문자열 s에서 시작하는 색인 찾기

분류에서Dev

char 배열 c의 숫자와 문자

분류에서Dev

C #의 문자열 조작 오류

분류에서Dev

C # 행맨, 문자열 조작

분류에서Dev

C ++ 문자열 분할 및 조작

분류에서Dev

목표 C 문자열 조작

분류에서Dev

문자열 조작-C # 및 Gmail

분류에서Dev

C ++에서 char 배열 자르기 (python에서 C ++로)

분류에서Dev

C #에서 특수 문자열 분할

분류에서Dev

C ++ 문자열 배열에 char ** 할당

분류에서Dev

C 정수를 포함하는 char 문자열 분할

분류에서Dev

특정 문자열 자르기

분류에서Dev

C에서 문자열을 만들기 위해 정수를 char로 추가

분류에서Dev

C의 문자열을 기반으로 정수 배열 조정

분류에서Dev

C의 문자열을 기반으로 정수 배열 조정

분류에서Dev

들어오는 문자열에 대한 c 문자열 조작

분류에서Dev

XSLT 함수의 문자열 조작

분류에서Dev

C의 기본 문자열 배열 조작

분류에서Dev

문자열 수정 (char 배열)

분류에서Dev

문자열 조작을 사용하여 문자열의 특정 문자 변경