7-4) 문자열의 일부분을 새로운 문자로 대치하는 프로그램을 만들기。

2013. 4. 12. 01:02프로그래밍/C언어 연습문제 및 풀이


 7-4) 임의의 문자열을 키보드로부터 입력받아 문자열 중 일정한 부분을 다른 문자열로 

        대치하는 프로그램을 함수

char *change_word(char *string, char *old_word, char *new_word);

       를 이용하여 작성하라. 함수 change_word는 대치할 문자열을 위한 인수이다.

        단 string은 30자 이내, new_word와 old_word는 10자 이내이며 new_word와 old_word

        의 실제 입력 자리수는 같아야 한다.



 <문제풀이>
#include <stdio.h>
#include <string.h>

char *change_word(char *string, char *old_word, char *new_word);
int main()
{
  char string[30];
  char old_word[10];
  char new_word[10];
  int i;
  
  printf("Input String : ");
  gets(string);
  printf("Choose string to modify : ");
  gets(old_word);
  printf("Input string to modify : ");
  gets(new_word);            // 문자열을 배열에 저장한다

  change_word(string,old_word,new_word);  // 세 문자열이 들어있는 배열의 주소를 함수의 인자로 넘긴다
  puts(string);    // chang_word 함수로부터 return 받은 string의 문자열을 출력한다.

  return 0;
}

char *change_word(char * string, char * old_word, char * new_word)
{
  int i;
  int j;
  char *oP;    //string에 입력한 문장 중에 old_word에 입력한 문자와 같은 값이 발견되면
                // 그 시작 주소를 oP에 넣을 것임


  oP = strstr(string,old_word);  //strstr함수의 활용 : string에 저장된 문자열에서 old_word의
                                 // 문자열과 일치하는 부분을 찾아 그 시작 주소를 반환한다.

  for(i = 0; i < strlen(old_word); ++i)  // strlen 함수의 활용 : old_word에 저장된 문자열의 길이를
                                         // 숫자로 반환한다. 만약 문자열에 name이라 적으면 4가 만환딤.
                                         // 따라서 i는 4번 반복.

    {
    oP[i] = new_word[i];    // old_word와 일치하는 string의 문자열을 찾아 new_word의 문자열로 바꾸기 위해
                            // oP배열에 new_word배열을 대입

    }
  return string;  // old_word 가 new_word로 바뀐 string을 반환.
}
 <출력 결과>