////
Search
🔤

C언어

다시 볼 문제
챕터 26 : 문자열 3
#include <stdio.h> typedef int bool; #define true 1 #define false 0 int str_len(char* arr) { int i=0; while (arr[i] != '\0') { if (arr[i] == '\0'){ return i; } i++; } return 0; } int ends_with(char* a, char* b) { int i=0; if (str_len(a) < str_len(b)) { return 0; } for (i=0; i<str_len(b);i++) { if (a[i + str_len(a) - str_len(b)] != b[i]){ break; } i++; } if (i == str_len(b)) return 1; else return 0; } int main(void) { bool rs; rs = ends_with("abc", "bc"); printf("rs : %d\n", rs); // 출력 rs : 1 rs = ends_with("kbs", "kb"); printf("rs : %d\n", rs); // 출력 rs : 0 rs = ends_with("kbs", "bs"); printf("rs : %d\n", rs); // 출력 rs : 1 rs = ends_with("mbc", "mc"); printf("rs : %d\n", rs); // 출력 rs : 0 return 0; }
C
복사
챕터 27 : 문자열 4
#include <stdio.h> #define true 1 int str_len(char* a){ for (int i=0; true; i++){ if(a[i] == '\0'){ return i; } } } int str_part_equals(char* str, int start, int end, char* pattern) { if (str_len(str) < str_len(pattern)){ return 0; } if (str_len(pattern) < (end - start)) { return 0; } int j=0; for (int i=start; i < end; i++){ if (pattern[j++] != str[i]){ return 0; } } return 1; } int main(void) { printf("str_part_equals(\"abcd\", 0, 2, \"ab\") : %d\n", str_part_equals("abcd", 0, 2, "ab")); // 출력 => str_equals("abcd", 0, 2, "ab") : 1 printf("str_part_equals(\"abcd\", 1, 2, \"b\") : %d\n", str_part_equals("abcd", 1, 2, "b")); // 출력 => str_equals("abcd", 1, 2, "b") : 1 printf("str_part_equals(\"abcd\", 2, 2, \"\") : %d\n", str_part_equals("abcd", 2, 2, "")); // 출력 => str_equals("abcd", 2, 2, "") : 1 printf("str_part_equals(\"abcd\", 2, 4, \"cb\") : %d\n", str_part_equals("abcd", 2, 4, "cb")); // 출력 => str_equals("abcd", 2, 4, "cb") : 0 printf("str_part_equals(\"abcd\", 2, 4, \"cd\") : %d\n", str_part_equals("abcd", 2, 4, "cd")); // 출력 => str_equals("abcd", 2, 4, "cb") : 1 return 0; }
C
복사
// 문제 : 문장에서 특정 문장의 위치를 반환하는 함수를 만들어주세요.(get_index_of_str) #include <stdio.h> #define true 1 int str_len(char* a){ for(int i=0;true;i++){ if(a[i] == '\0'){ return i; } } } int get_index_of_str(char* str, char* pattern) { int i = 0; for(i=0; true; i++){ if(str[i] == pattern[0]){ break; } } if(str_len(str) - i < str_len(pattern)){ return -1; } for (int j=0; j<str_len(pattern); j++) { if(str[i + j] != pattern[j]){ return -1; } } return i; } int main(void) { int index; index = get_index_of_str("abc", "b"); printf("index : %d\n", index); // 출력 => index : 1 index = get_index_of_str("test", "es"); printf("index : %d\n", index); // 출력 => index : 1 index = get_index_of_str("abcd", "bd"); printf("index : %d\n", index); // 출력 => index : -1 return 0; }
C
복사