본문 바로가기

C

[C언어] 실습: 두 개의 문자열을 입력받은 후, 값을 바꾸어 출력하기 (오류)

반응형

두 개의 문자열을 입력받은 후, 값을 바꾸어 출력하기 (오류)


오류:

포인터 *pstr 변수를 사용하였을 때, 크기가 다른 문자열 2개가 입력되면 pstr[0]과 pstr[1]에 할당된 크기가 다르기 때문에 오류가 발생한다.

 

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

int main(){

   char str[100];   // 임시배열을 선언해준다.
   char *pstr[2];

   printf("문자열 1 : ");
   scanf("%s", str);
   pstr[0] = (char*)malloc(strlen(str) + 1);
   strcpy(pstr[0], str);   // pstr[0]에 '문자열1'이 저장된 str의 문자열을 저장한다.


   printf("문자열 2 : ");
   scanf("%s", str);
   pstr[1] = (char*)malloc(strlen(str) + 1);
   strcpy(pstr[0], str);   // pstr[1]에 '문자열2'이 저장된 str의 문자열을 저장한다.
   
   // pstr[0]과 pstr[1]의 값을 바꾸어 준다.
   strcpy(str, pstr[0]);
   strcpy(pstr[0], pstr[1]);
   strcpy(pstr[1], str);

   printf("문자열 1 : %s, 문자열 2 : %s", pstr[0], pstr[1]);   // (오류)
   
   return 0;
}
반응형