-> 문자 하나를 담는다 && 출력형식 = %c
컴퓨터는 문자를 숫자로 저장한다 -> 아스키 코드
ex> char x = 'a';
'a'에 대응하는 아스키 코드값이 x에 들어있다!!
하나의 문자는 하나의 아스키 코드를 가지고 있다
printf("%c", x) --> 출력 시 아스키코드 값에 대응하는 문자 를 출력한다
printf("%d", x) --> 출력 시 아스키코드 값에 대응하는 정수 를 출력한다
fgets 사용법
-> fgets(str, num, stream)
ex> fgets(str, 1000, stdin)
str : 읽어들인 문자열을 저장할 char 배열을 가리키는 포인터
num : 마지막 NULL 문자를 포함하여, 읽어들일 최대 문자 수
이 값이 15라면 최대 14개 문자를 입력 받는다
stream : 표준 입력(stdin)에서 입력을 받으려면 여기에 stdin을 써주면 된다
문자열 -> 문자만으로 이루어진 배열
ex> char str[10];
문자열 저장 시 char형 배열의 크기 지정하지 않으면 자동으로 마지막 배열에 '널 문자'가 저장된다
#include <stdio.h>
int main() {
char myString[10];
myString[0] = 'h';
myString[1] = 'e';
myString[2] = 'l';
myString[3] = 'l';
myString[4] = 'o';
myString[5] = '\0'; // 마지막에 널 문자 넣어서
//문자열이 끝임을 명시적으로 얘기해줘야함
printf("%s\n", myString);
char myString2[] = "hello";
// 널 문자 고려해서 공간 6개를 잡는다
return 0;
}
X, A, B = 문자열 변수
-> '\0' 을 찾는다
#include <stdio.h>
#include <string.h> // 추가해줘야 함
int main() {
int len = 0;
char myString[100];
scanf("%s", myString); // 문자열 입력받을 시 & 없음!
// %s 는 띄어쓰기 이전까지 입력 받는다
// 띄어쓰기 포함은 fgets 사용해보기
while(1){
if(myString[len] == '\0'){
break;
}
len++;
}
printf("%d\n", len);
printf("%d\n", strlen(myString));
// 동일한 값이 출력된다
return 0;
}
-> 두 문자열이 같은지 비교
ex> strcmp(A, B)
1. 두 문자가 같으면 0 반환
2. A가 B보다 사전순으로 앞에 있으면 음수 반환
3. A가 B보다 사전순으로 뒤에 있으면 양수 반환
#include <stdio.h>
#include <string.h>
int main() {
char A[100], B[100];
scanf("%s", A);
scanf("%s", B);
int lenA, lenB;
lenA = strlen(A);
lenB = strlen(B);
if(lenA == lenB){
bool flag = false;
for(int i = 0; i < lenA; i++){
if(A[i] != B[i]){ // 문자 하나라도 다르면 flag true 된다
flag = true;
}
}
if(flag){
printf("Different!\n");
}else{
printf("Same!\n");
}
}
else{
printf("Different!\n");
}
printf("\n");
printf("Use strcmp\n");
if(strcmp(A, B) == 0)
printf("Same!\n");
else
printf("Different!\n");
return 0;
}
strcpy(A, B) -->> 문자열 B를 A에 복사 (널 문자까지 같이)
#include <stdio.h>
#include <string.h>
int main() {
char A[100];
char B[100];
scanf("%s", A);
scanf("%s", B);
int lenB = strlen(B);
for(int i = 0; i < lenB; i++){
A[i] = B[i];
}
A[lenB] = '\0'; // 마지막에는 널 문자 넣어주기
printf("%s\n", A);
printf("%s\n", B);
return 0;
}
// strcpy 사용
#include <stdio.h>
#include <string.h>
int main() {
char A[100];
char B[100];
scanf("%s", A);
scanf("%s", B);
strcpy(A, B); // 문자열 B를 A에 복사
printf("%s\n", A);
printf("%s\n", B);
return 0;
}
ex> char arr[100];
scanf("%s", arr);
-> 문자열 입력 받을 때 enter, tab, space 누를 때까지의 문자열 입력된다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
fgets(arr, 입력받을 수 있는 최대 문자수, stdin)
-> 엔터키가 입력되기 전까지 모든 문자열(공백 포함)이 입력된다