#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>
// 6.4 문자열 반복 /2675
/*int main(void)
{
int testCase = 0;
int repeat = 0;
char string[20] = "";
scanf("%d", &testCase); //테스트 횟수 입력 (ex. 2)
for (int i = 0; i < testCase; i++)
{
scanf("%d %s", &repeat, string); //반복횟수, 문자열 입력 (ex. 3 ABC), 현재 stirng[0]=A, string[1]=B, string[2]=C
for (int j = 0; j < strlen(string); j++) //문자열의 길이를 정한다.
{
for (int k = 0; k < repeat; k++) //반복횟수만큼 무언가를 입력한다.
{
printf("%c", string[j]); //반복횟수만큼 j를 반복한 값을 출력한다.
}
}
printf("\\\\n");
}
}*/
// 6.5 단어공부 /1157
/*int main(void)
{
char str[1000001];
int num[26] = { 0, };
int max;
int max_index = 0;
scanf("%s", str);
for (int i = 0; str[i] != '\\\\0'; i++) // i가 널이랑 다를때 까지(끝 까지)
{
if (str[i] < 97)
str[i] += 32;
num[str[i] - 97]++;
}
max = num[0];
for (int i = 1; i < 26; i++)
{
if (max < num[i])
{
max = num[i];
max_index = i;
}
else if (max == num[i] && num[i] != 0)
{
max_index = -1;
}
}
if (max_index != -1)
printf("%c", 65 + max_index);
else
printf("?\\\\n");
}
**
문자열 연습
strlen : 문자열의 길이를 반환 하는 함수
이 때, 문자열 여부를 구분하는 마지막 문자인 널 문자는
문자열의 길이에서 제외된다.
size_t strlen(const char *s); -> strlen()함수의 원형
strlen 을 사용해서 문자열 길이 구하기
int main(void)
{
const char* word = "hello"; //문자
printf("word = hello"); //위에걸 나타냄
printf("\\t문자열 길이 : %d\\n", (int)strlen(word)); //길이
}
//strlen 배열의 크기 != 문자열의 크기
/*int main(void)
{
char arr1[50] = "Hello";
printf("배열의 크기 = Hello");
printf("\\t 문자열의 길이 : %d\\n", (int)strlen(arr1));
}
중간에 \\0이 존재 할때 strlen의 반환
int main(void) //H e l l o 읽다가 \\0 나와서 끝인줄알고 5나옴
{
char arr2[100] = "Hello\\0World";
printf("문자열 : Hello\\0World");
printf("\\t길이 : %d", (int)strlen(arr2));
}
strcat : origin에 있는 문자열 n개를 dest 뒤쪽에 이어붙이는 함수이다
/*int main(void)
{
char origin[] = "APPLEPIE";
char dest[100] = "DELICIOUS";
strcat(dest, origin);
printf("case 1 : %s", dest);
}
//gets 함수 : 표준 입력으로 들어온 문자열을 C언어 스타일인 char*,
char[]타입으로 저장해주는 함수
/*int main(void)
{
char str[100];
for (int i = 0; i < 3; ++i)
{
gets(str);
printf("str : %s\\n", str);
int j = 0;
while (true)
{
if (str[j] == '\\0')
break;
printf("[%c]", str[j]);
++j;
}
printf("\\n\\n");
}
return 0;
}*/
//puts 함수 : C언어 스타일의 문자열인 char*, char[] 타입을 표준 출력으로 보내는 함수
//strcpy, strnpcy 함수 : 문자열을 복사.
int main(void)
{
char origin[] = "HelloWorld";
char word1[20];
char word2[10];
char word3[] = "GoodByebabygoodbye";
char word4[] = "hahahahahahahahahahahaha";
strcpy(word3, origin); // 빈 배열에 전체 복사할때
strncpy(word4, origin, sizeof(origin) - 1); //문자열 연결하기
//꽉 차있는 배열에 전체를 복사할 때
//strcpy(word2, origin); //run time error
//꽉 차있는 배열에 전체를 복사할때
//strcpy(word3, origin);
word3[10] = 's';
printf("case 1 : %s\\\\n", word3);
printf("case 2 : %s\\\\n", word4);
}
05/02
<strrchr 실습>
//return 값은 역참조를 하면 안된다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
char* strrchr(char* str1, char target) //strrchr : 문자열을 뒤에서 찾는 것.
{
char* firstchr = str1; // 첫글자를 저장한다.
if (*str1 == target) // 첫글자가 찾는 글자일때
{
return str1; //str1 반환
}
while (*str1 != '\\\\0') //str1이 NULL 값이 아닐경우
{
str1++; //str1 증감 -> str1 값의 끝까지 감.
}
if (*str1 == target) //마지막글자가 찾는 글자일 때,
{
return str1; //str1 값을 반환한다.
}
while (*str1 != *firstchr) // 위의 조건을 만족하지 않을 때 마지막부터 처음까지 반복
{
if (*str1 == target) //찾는 글자일 경우
{
return str1; //str1 값을 반환한다.
}
str1--; //아닐 경우 str1 값을 1칸만큼 앞으로 옮긴다.
}
return NULL; //찾는글자가 없다면 NULL값을 반환한다.
}
int main()
{
char string[100] = "i love kimchi bro";
char* target = 'o';
char* returnSave = strrchr(string, target);
printf("%c", *returnSave);
}