C 1주차 - 입출력함수

Gunter·2024년 2월 29일
0

C

목록 보기
3/13

포맷 스트링 (format string)

포맷 스트링(format string)이란 일반적으로 사용자로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식이다.

  • %d : 정수형 10진수 상수
  • %f : 실수형 상수
  • %lf: 실수형 상수
  • %c: 문자값
  • %s: 문자 스트링
  • %u: 양의 정수(10진수)
  • %o: 양의 정수(8진수)
  • %x: 양의 정수(16진수)
  • %n: 쓰인 총 바이트 수

%n은 이전까지 입력되었던 문자열의 길이(byte) 수 만큼 해당 변수에 저장시키기 때문에 메모리의 내용도 변조 가능하다. 이를 이용해 문자열의 길이를 내가 변조시키고 싶은 값의 길이만큼 만든 후 %n을 써주게 되면 메모리상에 내가 원하는 값을 넣을 수 있게 된다.

 


이스케이프 시퀀스 (escape sequence)

백슬래시() 뒤에 한 문자나 숫자 조합이 오는 문자 조합을 이스케이프 시퀀스 라고 한다.
이스케이프 시퀀스는 단일 문자로 간주되므로 문자 상수로 유효하다.

 


전처리기

프로그래머가 원하는 사항을 컴파일러에 직접 지시하는 문법을 전처리기(Preprocessor)라고 한다.
전처리기 문법은 # 기호로 시작하며 기계어로 번역되는 명령문이 아니기 때문에 문법 끝에 ;을 사용하지 않는다.

include 전처리기

#include 전처리기는 컴파일러에 자신이 명시한 파일을 읽도록 지시한다.
대부분 헤더 파일(*.h)을 읽을 때 사용한다.

#include <헤더 파일 이름>비주얼 스튜디오에서 제공하는 헤더 파일을 포함할 때
#include "헤더 파일 이름"프로그래머가 정의해 사용하는 헤더 파일을 포함할 때

 

define 전처리기

#define 전처리기는 상수나 명령문을 치환하는 문법이다.

#define 문법으로 상수 치환하기

#define MAX_COUNT 3

위와 같은 예시에서 #define 문법을 적용하면 컴파일러는 소스 파일에서 MAX_COUNT라는 단어가 나올 때마다 모두 3으로 바꾸어서 번역한다.





C 언어의 출력함수

단일 문자 풀력 함수 putchar, putc

putchar(65); /* 아스키 값 65에 해당하는 A가 출력됨 */
putchar('A'); /* 문자 A가 출력됨 */

putchar 함수가 성공적으로 문자를 출력하면 출력된 문자의 아스키 값을 반환하고, 오류가 발생해 출력에 실패하면 EOF(End Of File, -1) 값을 반환한다.
1바이트를 기준으로 출력하기 때문에 한 글자에 2바이트인 한글은 출력할 수 없다.

문자열 출력 함수 puts

puts("Hi~");

 

문자열 출력 함수 printf

int data = 5;
printf("%d", data);
int data = 7;
printf("[%5d] [%05d] [%-5d]", data, data, data);
/* %5d는 오른쪽 정렬, %05d는 공백 문자 대신 0으로 채우고 오른쪽 정렬, %-5d는 왼쪽 정렬이다. */

 

printf, fprintf, sprintf

https://haruhiism.tistory.com/8

 

C 언어의 입력함수

표준 입력 함수 scanf

getchar 함수는 하나의 문자를 입력 받는 함수
gets 함수는 문자열을 입력받는 함수
scanf 함수는 다양한 키워드를 사용하여 문자, 문자열 뿐만 아니라 정수, 실수까지 모두 입력 받을 수 있도록 형식화된 입력 제공

#include <stdio.h>
void main()
{
	int int_data;
    float float_data;
    
    scanf("%d", &int_data);
    scanf("%f", &float_data);
    
    printf("input : %d, %f\n", int_data, float_data);
}
5 [enter 입력]
3.14 [enter 입력]
input : 5, 3.140000

 



도전해보기

  1. 입력받은 값 출력하기
  1. 숫자 1개를 입력받는다.
  2. 해당 숫자를 출력한다.
    //볼드가 사용자 입력값입니다.
    ex)
    숫자를 입력해주세요. : 3
    입력받은 숫자 : 3
#include <stdio.h>

int main(){
    int hw1;
    
    printf("input number : ");
    scanf("%d", &hw1);
    
    printf("check number : %d", hw1);
    
    return 0;
}
  1. 입력받은 값의 연산 출력하기
  1. 숫자 2개를 입력받는다.
  2. 숫자 2개의 합, 차, 곱, 몫을 출력한다.
    //볼드가 사용자 입력값입니다.
    ex)
    숫자 두개를 입력해주세요. : 3 10
    입력받은 숫자 : 3 10
    3 + 10 = 13
    3 - 10 = -7
    3 * 10 = 30
    3 / 10 = 0.3

#include <stdio.h>
int main(){

        int num1,num2;
        printf("num1, num2 : ");
        scanf("%d %d", &num1, &num2);
    
        printf("num1 : %d, num2 : %d\n", num1, num2);
    
        printf("%d + %d = %d\n", num1, num2, num1+num2);
        printf("%d - %d = %d\n", num1, num2, num1-num2);
        printf("%d * %d = %d\n", num1, num2, num1*num2);
        printf("%d / %d = %d\n", num1, num2, num1/num2);

        return 0;
}

0개의 댓글