본문 바로가기
공학/C

문자와 문자열

by 둥둥잇 2014. 11. 18.


한 문자 저장

char c = 'A';

char c1 = 65;


A의 아스키코드 65 / a의 아스키코드 97


* 문자열의 저장

문자열을 저장하기 위해 char형의 배열을 이용해 문자열 저장


* 문자열의 끝은 null \0


char str1[6] = "Seoul";

char str2[] = "the capital city of Korea.";



* 문자 입출력 함수

- int getchar() 하나의 문자를 읽어서 반환

- void putchar(int c) 변수 c에 저장된 문자를 출력

#include <conio.h>

- int getch() 하나의 문자를 읽어서 반환 (버퍼 사용 x)

- void putch(int c) 변수 c에 저장된 문자를 출력 (버퍼 사용 x)


- scanf("%c", &c) 하나의 문자를 읽어서 변수 c에 저장

- printf("%c", c) 변수 c에 저장된 문자를 출력


+

scanf() 함수가 변수를 받아서 변수 안에 값을 저장하기 위해서는

반드시 변수의 메모리 주소가 필요 => & 필요



int ch;

while(1)

{

ch = getchar();

if(ch=='q') break;

putchar(ch);

}



* 문자열 입출력

- int scanf("%s", s) 문자열을 읽어서 문자 배열 s[]에 저장

- int printf("%s", s) 배열 s[]에 저장되어 있는 문자열 출력

- char *gets(char *s) 한 줄의 문자열을 읽어서 문자 배열 s[]에 저장

- int puts(const char *s) 배열 s[]에 저장되어 있는 한 줄의 문자열 출력


- char *gets(char *buffer);

- int puts(const char *str);

사용자로부터 한 줄을 입력받거나 출력



* 문자 처리

- isalpha(c) 영문자인가

- isupper(c) 대문자인가

- islower(c) 소문자인가

- toupper(c) 대문자로

- tolower(c) 소문자로

- toascii(c) 아스키 코드로



* 문자열 처리

#include <string.h>

- strlen(s) 문자열 길이

- strcpy(s1, s2) s2를 s1에 복사

- strcat(s1, s2) s2를 s1의 끝에 붙여넣기

- strcmp(s1, s2) 비교

- strncpy(s1, s2, n) s2의 최대 n개의 문자를 s1에 복사

- strncat(s1, s2, n) s2의 최대 n개의 문자를 s1 끝에 붙여넣기

- strncmp(s1, s2, n) n개의 문자까지 비교

- strchr(s, c) s 안에서 문자 c 찾기

- strstr(s1, s2) 문자열 s1에서 문자열 s2 찾기



char dst[6];

char src[6] = "Hello";

strcpy(dst, src);        // "Hello"가 dst로 복사



* 문자열 수치 변환

- sscanf(s, ...) 문자열 s로부터 지정된 문법으로 수치를 읽어 변수에 저장

- sprintf(s, ...) 수치를 형식 지정자에 따라 문자열 형태로 s에 저장

- int atoi(const char *str); str을 int형으로 변환

- double atoi(const char *str); str을 double형으로 변환




+

C에서는 하나의 배열을 다른 배열과 비교, 대입할 수 없음

char *s = "language";

if(s=="language") 에서 항상 같지 않다는 결과가 나옴

=> if( strcmp(s, "language") == 0) 라고 써야함


char *p = "Hello World";

p[1] = NULL;

문자열 상수가 저장되고 문자열 상수의 주소만 포인터 p가 가짐

문자열 상수는 보통 읽기 전용 메모리 공간에 저장되므로 p를 가지고 문자열 수정 불가능




'공부 > C' 카테고리의 다른 글

표준 입출력과 파일 입출력  (0) 2014.11.19
동적 메모리  (0) 2014.11.19
전처리기  (0) 2014.11.18
공용체  (0) 2014.11.18
구조체  (0) 2014.11.18

댓글