경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220428 2022/04/04~2022/12/13

Jinho Lee·2022년 4월 28일
0

경일 메타버스 20220428 4주차 4일 수업내용. C언어 문자열, 관심사 분리

C언어 프로그래밍 https://docs.google.com/document/d/1pTQ2cg7jq36qksTc5IRbD86jXhDA6vpIgkhbzS9uyrk/edit

  • Buffer Overrun
    문자열의 공간보다 더 많이 입력하게 되면 오류
  • 해결
  1. scanf_s : scanf-Secure, 몇 글자를 받을지 지정하여 Buffer Overrun 방지
  2. 입력 받을 때 길이를 수로 지정
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>

int main(void)
{
    char str[10];
		
		// Pointer Type : 메모리 주소값으로 해석하는 타입
		// 배열은 포인터 타입으로 암시적 변환 가능 -> 포인터로 퇴행(decay)했다.

    // Buffer Overrun
    scanf("%s", str); // str의 공간보다 더 많이 입력하게 되면 오류
    scanf_s("%s", str, 10); // scanf-Secure : 몇 글자를 받을지 지정하여 Buffer Overrun 방지
		scanf("%9s", str); // 입력 받을 때 길이를 수로 지정

    return 0;
}
  • 문자열의 초기화
    char str[100] = “”; // Empty string
  • 관심사 분리 (Separation of Concerns, SoC)
    컴퓨터 프로그램을 구별된 부분으로 분리시켜야 한다는 디자인 원칙.
  • 개행까지의 한 줄을 다 받고 싶다
    fgets(배열 포인터, 최대 크기, stdin);

0개의 댓글