C 스터디 5주차

아스키코드

각각의 문자들은 고유한 값을 갖고있는데 그것이 바로 아스키코드이다.

  char a = 'a';
  char b = 'b';
  char A = 'A';
  char B = 'B';

  printf("%d\n", a);  #출력 결과 : 97
  printf("%d\n", b);  #출력 결과 : 98
  printf("%d\n", A);  #출력 결과 : 65
  printf("%d\n", B);  #출력 결과 : 66

아스키코드표


문자열

문자열이란?

문자들의 배열 즉 char 배열이다.

 char buf1[] = "Hello";
 char buf2[4] = "Hello";
 char buf3[5] = "Hello";
 char buf4[6] = "Hello";
 char buf5[100] = "Hello";

 printf("%s\n", buf1);  #출력 결과 : Hello
 printf("%s\n", buf2);  #출력 결과 : Hell까지 출력이 되고 뒤에 이상한 값이 출력된다.
 printf("%s\n", buf3);  #출력 결과 : Hello까지 출력이 되고 뒤에 이상한 값이 출력된다.
 printf("%s\n", buf4);  #출력 결과 : Hello
 printf("%s\n", buf5);  #출력 결과 : Hello

문자열은 int 배열과 달리 끝에 NULL문자('\0')가 들어간다.

 char buf[6] = "Hello";

문자열을 입력 받는 방법은 여러가지 방법이 있다.

 char buf[100];
 scanf("%s", buf);

Hello를 입력하고 출력해보면 Hello가 잘 출력된다. 하지만 Hello world를 입력하고 출력해보면 Hello만 출력이된다. 왜 Hello world가 전부 출력이 되지 않았을까?

scanf()로는 공백을 읽을 수 없기 때문이다. 그렇다면 어떻게 해야할까?

gets()를 사용하면 된다.

 char buf[100];
 gets(buf);

Hello world를 입력하고 출력해보면 Hello world가 출력이 된다. 하지만 컴파일 과정에서 경고를 받았을 것이다. 그 부분에 대해서는 직접 fgets()를 검색해보며 공부하자.


string.h

지금까지 scanf()와 printf()를 사용하기 위해 stdio.h를 사용했다면 문자열관련 함수들을 사용하기 위해서는 string.h를 사용해야한다.

문자열 길이 - strlen()

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

int main(void)
{
  char buf[] = "hello world";
  int len = strlen(buf);
  printf("%d\n", len);  #출력 결과 : 11
  return 0;
}

다른 기타 함수들로는 strcmp, strcpy, strcat등등 있으며 직접 검색해보며 공부하자.

results matching ""

    No results matching ""