한 문자 저장
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를 가지고 문자열 수정 불가능
댓글