2012-12-02 3 views

답변

9

strncmp("ADD", buffer, 3)과 같은 문자 배열의 조각을 어떻게 취할 수 있습니까?

"슬라이스"가 의미하는 바가 확실하지 않지만 buffer 내부의 모든 포인터는 슬라이스로 간주 될 수 있습니다. 예를 들어 buffer"ADD"으로 시작하는 문자열 인 경우 char *slice = buffer + 3"ADD"이 제거 된 동일한 문자열입니다. 참고slicebuffer의 일부이고 slice의 내용을 수정하면 buffer의 내용이 수정됩니다. 그리고 다른 길은 둥글다.

"슬라이스"가 독립적 인 복사본을 의미하는 경우 새로운 메모리 블록을 할당하고 buffer의 흥미로운 부분을 메모리에 복사해야합니다. 라이브러리 함수는 strdupstrndup이 편리합니다.

+0

가 어떻게 원래 문자 시퀀스보다 짧은 오프셋과 끝을 지정할 수, 테스트 할 수있는 변수? "hello"+ 1 크기 3 ("ell")처럼; 그것이 내가 믿는 조각이 의미하는 바입니다. 다행스럽게도 strncmp와 printf는이 작업을 할 수있는 옵션을 제공하지만 문자 시퀀스로 이것을 표시하는 것은 깔끔합니다. – scape

+0

@scape [C에서 문자열에서 하위 문자열을 추출하는 방법] (https://stackoverflow.com/questions)을 참조하십시오./19555434) – kmkaplan

+0

"strtok은 일반적으로 구분 기호를 '\ 0'으로 바꿉니다. 입력 내용을"먹습니다 ". 분명히 몇 가지 결점이있다. – scape

8

사용 strncmp .Assuming 버퍼는

strncmp (buffer,"ADD",3); 
관련 문제