반응형
두 개의 문자열을 입력받은 후, 값을 바꾸어 출력하기 (오류)
오류:
포인터 *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;
}
반응형
'C' 카테고리의 다른 글
[C언어] 구조체(Structure) (0) | 2021.05.16 |
---|---|
[C언어] 실습: 알맞은 암호(abcd1234)가 입력되면 프로그램 종료하기 (0) | 2021.05.11 |
[C언어] 실습: 두 개의 문자열을 입력받은 후, 값을 바꾸어 출력하기 (0) | 2021.05.06 |
[C언어] 실습: 입력받은 문자열 역순으로 출력하기(포인터 변수) (0) | 2021.05.05 |
[C언어] 실습: 입력받은 문자열 역순으로 출력하기 (1) | 2021.05.04 |