Programing/C- programing

C++ 배열에서 원하는 문자열 찾아서 고치기 바꾸기

sosal 2009. 10. 15. 21:17
반응형
/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



#include<iostream>
#include<cstring>

using namespace std;

int main(void){

 char one[80]={0,};
 char find[80]={0,};
 char *first;
 char *last;

 char change[80]={0,};
 char tmp[80]={0,};

 unsigned int i;

 cout<<"기존 문자열 : ";
 cin.getline(one,80); //cin.getline(char*,int cnt)는 띄워쓰기까지 포함하여 배열에 넣습니다.
                             //사용자가 엔터 치기 전까지의 모든 문자열을 담게됩니다.

 cout<<"찾을 문자열 : ";
 cin.getline(find,80);
 cout<<"바꿀 문자열 : ";
 cin.getline(change,80);

 for(i=0;i<strlen(one);i++){ //one 이란 배열을 모두 훑어봅니다.
  first=&one[i]; // 훑어보는 포인터 first.

  if(strncmp(first,find,strlen(find))==0){ //first에서부터 찾는 단어의 크기까지 단어가 같다면
   //이제부터 바꿔버립니다.

   last = &one[i+strlen(find)]; // last에 바꿔버릴 단어 이후의 시작을 찍습니다.
   strncpy(tmp,change,strlen(change)); // last 이후로 바꿀 문자열을 넣고,
   strncat(tmp,last,strlen(last)); // 그이후도 다 넣습니다.
   strncpy(first,tmp,strlen(tmp)); // 바꿀 문자열의 첫 위치부터 tmp를 넣으면 바뀝니다.
   
   memset(tmp,'\0',sizeof(tmp)); // 임시배열 초기화
  }
 }
 cout<<"결과 문자열 : ";
 cout<<one<<endl;
 return 0;
}


ex)