문자열에서 단어/단어를 바꿀 수있는 방법을 찾고 있습니다. 이 같은 기능을 사용하는 경우의 말을하자C에서 문자열 내부의 단어 교체
changewords("Hello I'm Number One","Number One","Zero");
출력이 같이 될 것입니다 : "안녕하세요 난 넘버원"-이
하지만 더 "안녕하세요 제로 해요"> 나는 것 이 같은 단 하나의 단어도
changewords("Hello I'm Number One","One","Four");
을 대체 할 수 : "안녕하세요 나는 번호 하나있어"-> 내 코드에서
"안녕하세요 나는 4 번 해요"나는 단어 문장을 분할하여 비교 각 단어를 단어로 내가 바꿀 필요가 있지만 그런 식으로 단 하나의 단어 만 바꿀 수 있습니다. 어느 한 방법으로 올바르게 할 수 있습니까? 감사합니다. . 여기 내 코드는 행렬 (테이블)의 한 줄을 문장으로 사용하고 줄 번호는 sentenceToChange 변수입니다.
int changewords (char table[][MAX_SENTENCE_LENGTH], int numOfSentences, int sentenceToChange, char subString[],char replaceWith[]){
int slen,i=0,q=0,c=0;
char wordlist[100][100];
char final[1][100];
slen=strlen(table[sentenceToChange]);
for(i=0;i<slen;i++) {
if(table[sentenceToChange][i]!=' '){
wordlist[q][c]=table[sentenceToChange][i];
c++;
}
else {
wordlist[q][c]='\0';
c=0;
q++;
}
}
for(i=0;i<q;i++) {
if (!strcmp(wordlist[i],subString)) {
strcpy(wordlist[i],replaceWith);
}
}
final[0][0]='\0';
for(i=0;i<=q;i++) {
strcat(final[0],wordlist[i]);
if(i!=q) strcat(final[0]," ");
}
final[0][slen-1]='\0';
strcpy(table[sentenceToChange],final[0]);
} 않는 strstr 작동 것에 대해 위에서 언급 한 무엇
당신은 그것을 너무 복잡하게 만들고있어 - 방금 대상 문자열에 대한 호출 다음 몇 가지를 찾아'strstr'을 사용' memmove'를 사용하여 새 문자열을 삽입하고 나머지 부분을 조정하십시오. –
위의 내용을 추가하면 ...'strstr()'과 일치하는 단어를 찾은 후에 더 긴 단어의 일부와 일치하는 경우 앞뒤의 문자가 알파/영숫자가 아닌지 확인할 수 있습니다. – Dmitri
귀하의 조언과 도움에 감사드립니다. – Matan