문자열이 "abc{efg}dgb"
인 경우 중괄호 사이의 문자를 대체하려고합니다. 이것은 내가 현재 시도하고있는 것입니다. 그러나 그것은 memcpy
3 번 필요합니다. 개선 될 수 있습니까?문자를 어떻게 바꿀 수 있습니까?
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<string>
#include<iostream>
#include<string.h>
using namespace std;
void replace(char *newWord,char *a,char *b)
{
char *p;
char *q;
int offset = 0;
int pos = 0;
int len_b = strlen(b);
p= strchr(a,'{');
offset = p -a;
memcpy(newWord,a,offset);
offset += pos;
memcpy(newWord+offset,b,len_b);
offset += len_b;
q = strchr(a,'}');
memcpy(newWord+offset,q+1,strlen(q+1));
}
int main()
{
char *a = "abc{acd}efg";
char *b = "new";
char *q;
char newWord[1024]="";
replace(newWord,a,b);
printf("%s",newWord);
}
지금를 NewWord는 "abcnewefg"여기
정확한 호출이 느린 것으로 생각하기 전에 프로그램을 벤치 마크하십시오. 또한 C와 C++은 다른 언어입니다. 하나를 선택하십시오! (C++을 선택했다면, 가능한 경우 [C++ 11] (http://en.wikipedia.org/wiki/C%2B%2B11)을 사용하십시오). –
C 및 C++ 용 솔루션은 다를 수 있습니다. 하나 골라. –
나는 qustion을 변경했습니다. 다시 게시 할 수 있습니까? – liumilan