c언어 문제 질문

코딩 문제 질문 드립니다.
몇시간 째 하고 있는 지 모르겠네요 ㅜㅜ 제 코드 뭐가 문제일까요??

사용자로부터 입력받은 첫 번째 문자열을 동적 할당된 메모리에 저장한 후 화면에 출력하고, 두 번쨰로 입력받은 문자열을 첫 번쨰로 동적 할당된 메모리에 덧붙여 출력하는 프로그램을 작성합니다. 이때, 메모리가 부족해서 문제가 발생하지 않도록 메모리의 크기를 조정합니다. 기존에 할당받은 메모리의 크기를 늘려도 좋고 다시 할당받아도 좋습니다. 혹은 두 경우를 모두 구현하는 것도 좋습니다.

출력 예:
HelloWorld <입력
HelloWorld
TestString<입력
HelloWorldTestString

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

int main()
{
	char* pszBuffer = NULL; 
	char* NewpszBuffer = NULL;
	char* Plus = NULL;

	pszBuffer = (char*)calloc(11,sizeof(char));
	gets_s(pszBuffer,11);
	puts(pszBuffer);
	
	gets_s(Plus, 11);
	NewpszBuffer = (char*)realloc(pszBuffer, 22);
	
	if (NewpszBuffer == NULL)
		free(pszBuffer);
	
	sprintf(NewpszBuffer, "%s %s", pszBuffer, Plus);
	
	puts(NewpszBuffer);
	free(NewpszBuffer);
	
	
	return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char *pszBuffer = (char *)calloc(11, sizeof(char));
    char *Plus;
    char *backup;

    gets_s(pszBuffer, 11);
    puts(pszBuffer);
    // 첫번째 문자열을 동적 할당된 메모리에 저장한 후 화면에 출력

    realloc(pszBuffer, 22);
    // 메모리가 부족해서 문제가 발생하지 않도록 메모리의 크기를 조정

    Plus = (char *)calloc(11, sizeof(char));
    gets_s(Plus, 11);
    strcpy(pszBuffer+strlen(pszBuffer), Plus);
    puts(pszBuffer);
    // 두번째 문자열을 동적 할당된 메모리에 저장한 후 첫번째로 동적 할당된 메모리에 덧붙여 출력

    free(pszBuffer);
    free(Plus);
    // 메모리 해제

	return 0;
}

문제점을 짚어드리자니 어떤 의도로 짜신 코드인지 알기 어려워서…
일단 말씀하신대로 작동하는 코드를 짜봤습니다.


이렇게 오류가 뜨는데요 제가 쓴 코드도 gets_s함수에 저렇게 오류가 뜨던데… 왜 이러는 걸까요??

오류가 아니고 경고입니다.
사진만 봤을 때, 동적할당에 실패했을 때 문제가 될 수 있다고 얘기해주는 게 아닐까요?

이럴 경우에 경고 무시 할 수 있는 방법이 있을까요?? 답변 정말 감사합니다

#pragma warning(disable 4996) 같은 게 있긴 합니다(4996은 임의 숫자).

그런데 경고를 해주는 데는 어느 정도 이유가 있는 거라 지금은 공부중이니 무시하더라도 나중에는 경고를 없애는 쪽으로 가는 게 좋을 것 같습니다? 저도 c, c++을 현업에서 쓰진 않아서 이렇게까지 밖에 얘기를 못 하겠네요.

좋은 답변 감사합니다!!

int main() {
char *user_str1=malloc(sizeof(char)*20);
char *tmp1;

//사용자가 첫번째로 입력 받은 문자열
strcpy(user_str1,“이게 문자냐”);

//입력받은 문자열 동적메모리 할당 저장
tmp1=malloc(strlen(user_str1));
strcpy(tmp1,user_str1);

//한 후 출력
printf(“사용자가 입력한 첫번째 문자열 %s\n”,user_str1);

//사용자가 두번째로 입력 받은 문자열
strcpy(user_str1,“덧붙인다”);

//메모리가 부족해서 문제가 발생하지 않도록 메모리의 크기를 조정
tmp1=realloc(tmp1,strlen(tmp1)+strlen(user_str1));

//두번째로 입력받은 문자열을 첫번째로 동적 할당된 메모리에 덧붙여 출력
strcat(tmp1,user_str1);
printf(“결과 %s\n”,tmp1);
}

저는 이런식으로 해봤습니다. ;;

realloc 은 할당된 메모리의 주소가 달라지더라도
데이터는 유지가 된다고 해서 굳이 버퍼를 만들지 않았습니다…;;