문자열 - 문자의 배열
1) scanf("%99[^\n]s", myString); // 99개 문자열 중에 줄바꿈 제외하고 표현한다는 뜻.
//항상 이렇게 써야 문자열을 읽어올 수 있으니 외워야한다.
2) scanf : 문자열은 &를 빼주고 다른 정수나 실수는 &를 넣어줘야한다.
#include "Header.h"
int main() {
char myString[100];
scanf("%99[^\n]s", myString);
printf("입력받은 문자열은 %s 입니다.", myString);
return 0;
}
3) 문자열이란?

4) #include <>

5) char string[100]
5) strcpy( ... )

//이 strcpy( ... )함수를 사용하기 위해서는 #define _CRT_SECURE_NO_WARNINGS가 헤더파일이나 소스파일 가장 처음 부분에 있어야 합니다.
6) scanf( ... )

7) strcmp();

strcmp 함수는 문자열 두 개를 파라미터로 받아 두 문자열을 비교해주는 함수입니다. 두 문자열이 같다면 0이 리턴이 되고 사전적 우선순위에 따라 -1과 1이 리턴이 될 수 있습니다. 파라미터의 위치를 기준으로 좌측 파라미터의 우선순위가 높다면 -1, 우측 파라미터의 우선순위가 높다면 1이 리턴되게 됩니다.
구문은 두 문자열이 같은지 비교하는 구문이다. 결과가 0이면 같다. -1이면 왼쪽 수가 오른쪽 수 보다 문자 배열상 크다. +1 이면 반대이다.
8) strcpy();
문자열을 복사할때 사용한다.
9) Null terminated string - NULL 문자는 \0을 활용해 지정 가능하다.

#include "Header.h"
int main() {
char myString[100];
scanf("%99[^\n]s", myString);
printf("입력받은 문자열은 %s 입니다.", myString);
// strcpy 예제코드
/* char inputString[100];
printf("문자열을 입력하세요:");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", inputString);
char duplicatedString[100];
strcpy(duplicatedString, inputString);
printf("입력된 문자열은 %s 입니다.", duplicatedString);
*/
/*
char str1[100];
char str2[100];
strcpy(str1, "HelloA");
strcpy(str2, "HelloB");
int result = strcmp(str1, str2);
printf("%d", result);
*/
return 0;
}
연습문제 1)

SOL)
#include "Header.h"
int main() {
char input1[100];
char input2[100];
printf("문자열을 입력하세요. :");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", input1);
printf("문자열을 한번 더 입력하세요.:");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", input2);
strcpy(input1, input2);
if (strcmp(input1, input2) == 0) {
printf("True");
}
else {
printf("False");
}
return 0;
}
2)

SOL)
#include "Header.h"
int main() {
char input1[100];
char input2[100];
printf("문자열을 입력하세요.");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", input1);
printf("문자열을 한번 더 입력하세요.: ");
fseek(stdin, 0, SEEK_END);
scanf("99[^\n]s", input2);
bool same = true;
for (int i = 0;;i++) {
if (input1[i] == '\0') break;
if (input1[i] != input2[i]) same = false;
}
if (same == true) {
printf("두 문자열은 같습니다.");
}
else {
printf("두 문자열은 다릅니다.");
}
return 0;
}
과제형 문제)

SOL)
#include "Header.h"
int main() {
char input1[100];
char rev[100];
int size;
printf("문자열을 입력하세요.: ");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", input1);
for (int i = 0; i < 100;i++) {
if (input1[i] == '\0') {
size = i;
break;
}
}
for (int i = 0; i < size+1; i++) {
if (input1[i] != '\0') {
rev[i] = input1[size - i- 1];
}
else {
rev[i] = '\0';
}
}
printf("뒤집힌 문자열은 %s 입니다.", rev);
return 0;
}
다른 방법
"Header.h"
int main() {
char input[100];
char rev[100];
int index;
printf("문자열을 입력하세요.: ");
fseek(stdin, 0, SEEK_END);
scanf("%99[^\n]s", input);
for (int i = 0; i < 100;i++) {
if (input[i] == '\0') {
index = i;
break;
}
}
for (int i = index -1 ; i >= 0; i--) {
printf("%c", input[i])
}
printf("뒤집힌 문자열은 %s 입니다.", rev);
return 0;
}