[백준 C] 10926번 : ??!

anfruf·2022년 5월 6일

백준 C언어

목록 보기
10/62
  1. C언어 : 입출력과 사칙연산(10)

06.MAY.2022

1.문제 : 출력

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 
놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 
아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

2.문제 풀이

C 언어에는 문자열(String) 자료형이 따로 존재하지 않는다.
따라서 문자열을 저장하기 위해 2가지 방법을 사용했다.
>>2-1. 첫 번째 방법 : 배열

#include<stdio.h>

int main()
{
	char c[50]; 

	scanf("%s", &c);

	printf("%s??!\n", c); 
}

문자열을 입출력하기 위해 첫 번째로는 배열을 사용할 수 있다.
입력 조건에 길이가 50자가 넘지 않는다는 문구가 있었으므로, 길이가 50인 배열을 선언한다. 그 후 문자열을 입력받아 배열에 저장하고, 출력시에는 문자열 뒤에 조건에 맞는 문자들을 붙여 출력한다.
>>2-2 : 두 번째 방법 : 메모리 동적 할당

#include <stdio.h>
#include <stdlib.h> // malloc 헤더 파일 include

int main() {

	char* str = (char*)malloc(sizeof(char) * 50);

	scanf("%s", str);
	printf("%s??!", str);
    
    free(str) // 동적할당 해제 함수
}

문자열을 입출력하기 위해 두 번째로는 malloc()함수를 이용한 동적 메모리 할당을 이용할 수 있다. 포인터 변수 str에 malloc() 함수를 이용해 char 자료형, 50(필요한 길이)만큼의 메모리를 할당한 후, 이 포인터 변수 str을 이용해 입출력을 진행했다. 할당한 메모리는 free() 함수를 이용해 잊지말고 해제해 주도록 하자.😃

0개의 댓글