2012-12-04 5 views
0

저는 c.it에서 부분 문자열 문제가 있습니다. 부분 문자열을 올바르게 변경하지 않았습니다. foo를 찾아 다른 것으로 바꾸어야하지만 it.it을 변경할 수 없습니다. 'o'부분 만 변경합니다. 제발 도와주세요. ..substring 오류를 대체합니다

#include <stdio.h> 
#include <string.h> 

char *replace(char *s, char old, char newer) 
{ 
char *p = &s[0]; 

while(*p) 
{ 
if(*p == old) 
*p = newer; 

p++; 
} 

return s; 
} 

int main() 
{ 
char mystr[250]; 
printf("enter "); 
gets(mystr); 
puts(replace(mystr, 'foo', 'bars')); 
return 0; 
} 
+0

char! = string. – duedl0r

+0

함수는 하나의 문자 만 대치 할 수 있습니다. – Jon

+0

[This (http://stackoverflow.com/questions/779875/what-is-the-function-to-replace-string-in-c)는 내 친구가 원하는 것이며, 개인이 아닌 문자열을 대체하려고합니다. 문자. – axiom

답변

0

우선하여 기능한다 문자 아니다는 "새로운" "이전"및 단일 문자를 걸리지 만 당신은 문자열을 대체 할

+0

이 문제를 해결하려면 무엇을 할 수 있을까요 ?? – nomad

+0

먼저 서명을 _char * replace (char * s, char * old, char * newer) _로 변경하고 _strcmp_를 수행하십시오. 또는 메인 포스트에서 @axiom 링크를 확인하십시오. – Oliver

+0

그것을 찾고 : D – nomad

0

'갑'과 '바',

+0

그것들을 똑같은 일을하는 char로 초기화하십시오. – nomad

+0

try : puts (replace ("help", 'p', 'l'))); – carlosdc

+0

하지만 사용자로부터 문자열을 변경하려면 – nomad

1
char *replace(char *s, char *old, char *newer) 
{ 
... 

if(*p == *old){ 
    *p = *newer; 
    old++; newer++; 
} 
... 

puts(replace(mystr, "foo", "bars")); 

이러한 변경으로 문제가 해결됩니다.

+0

그것은 단지 3 단어를 바꿨는데 어떻게 네 번째 문자를 추가 할 수 있습니까 ?? – nomad