2013-02-10 9 views
0

문자열이 있는데 다른 단어의 하위 문자열인지 확인하려고합니다. 예컨대strncmp C 스타일 문자열 함수 사용

(의사)의

say I have string "pp" 

and I want to compare it (using strncmp) to 

happy 
apples 
pizza 

and if it finds a match it'll replace the "pp" with "xx" 
changing the words to 

haxxles 
axxles 
pizza 

이 가능하여 strncmp입니까?

+0

예, 가능합니다. –

+0

정교하게 : 입력 문자열에 대해 루프를 사용하고 각 위치에서 'strncmp'를 사용하여 일치하는 항목이 있는지 확인할 수 있습니다. 'strstr' 솔루션보다 조금 더 많은 코드이지만 작동 할 것입니다. – nneonneo

답변

4

하지 직접 strncmp으로,하지만 당신은 strstr으로 작업을 수행 할 수 있습니다

char s1[] = "happy"; 

char *pos = strstr(s1, "pp"); 
if(pos != NULL) 
    memcpy(pos, "xx", 2); 

이 단지 작품을 검색하는 경우와 대체 문자열은 같은 길이이다. 일치하지 않으면 memmove을 사용해야하고 큰 문자열을 할당하여 결과를 저장해야합니다.

+0

고마워요 !!! 그 모든 것을 cstring 한 학기가 지난 학기에 끝난 후에도 나는 아직도 더 많은 것을해야한다고 생각합니다. 나는 strstr을 사용한 적이 없으며 memcpy도 사용하지 않았다. 다시 한번 감사드립니다. – juice

+0

이것을 달성하기 위해서는'strncmp'를 사용하는 것이 전적으로 가능합니다 - strstr을 사용하는 것이 더 쉽지만 또 다른 문제입니다. –

+0

주목할만한 점 : 이들이 문자열이지만, 전체 문자열 (null terminators 포함)을 복사하기 때문에 'strcpy'를 사용하지 않습니다. – nneonneo

1

strncmp와 (과) 일치하지 않음. strstr

char happy = "happy"; 
char *s = strstr(happy, "pp"); 
if (s) memcpy(s, "xx", 2); 
+0

상수 문자열을 사용할 수 없습니다 ... – nneonneo

+0

@nneonneo - 당신은 생각하지 않습니다. –