finished cls11

This commit is contained in:
2026-07-06 00:19:15 +09:00
parent 1fdf602754
commit 54df531af1
5 changed files with 98 additions and 18 deletions
+23 -17
View File
@@ -3,8 +3,10 @@
#define BUFF_SZ 128
// Lenght of string including null terminator
// Obtain the lenght of string
int my_strlen(char *str, int max_len) {
if (str == NULL) return -1;
int i = 0;
while (*(str + i) != '\0' && i < max_len)
i++;
@@ -14,6 +16,8 @@ int my_strlen(char *str, int max_len) {
// convert ASCII CAPITAL CASE ALPHABETS into lower case alphabets
void to_lower(char *str, int sz) {
if (str == NULL) return;
for (int i = 0; i < sz; i++) {
if (*(str + i) >= 'A' && *(str + i) <= 'Z') {
*(str + i) = *(str + i) + 0x20;
@@ -23,12 +27,12 @@ void to_lower(char *str, int sz) {
// remove every non-alphabet letters from string
int strip(char *str, char *dest, int sz) {
int ret_sz = 0;
if (str == NULL || dest == NULL) {
return -1;
}
int ret_sz = 0;
for (int i = 0; i < sz; i++) {
if (*(str + i) >= 'a' && *(str + i) <= 'z') {
*(dest + ret_sz) = *(str + i);
@@ -43,6 +47,8 @@ int strip(char *str, char *dest, int sz) {
// check if string is a palindrome
bool kaibun(char *str, int sz) {
if (str == NULL) return false;
for (int i = 0; i < (sz - 1)/2; i++) {
if (*(str + i) != *(str + sz - i - 2)) {
return false;
@@ -53,28 +59,28 @@ bool kaibun(char *str, int sz) {
}
int main(void) {
char *b = (char*)malloc(sizeof(char) * (BUFF_SZ + 1)); // BUFF_SZ letters + null terminator
char *t = (char*)malloc(sizeof(char) * (BUFF_SZ + 1));
// BUFF_SZ letters + null terminator
char *buff = (char*)malloc(sizeof(char) * (BUFF_SZ + 1));
char *processed_str = (char*)malloc(sizeof(char) * (BUFF_SZ + 1));
printf("Input string: ");
char* res = fgets(b, BUFF_SZ, stdin);
char* res = fgets(buff, BUFF_SZ, stdin);
if (res == NULL) {
printf("Error while reading from stdin\n");
return 0;
return 1;
}
int len = my_strlen(b, BUFF_SZ);
int len = my_strlen(buff, BUFF_SZ);
if (len == -1) {
printf("Error on retrival of string length.");
return 1;
}
to_lower(buff, len);
len = strip(buff, processed_str, len);
printf("len: %d\n", len);
to_lower(b, len);
len = strip(b, t, len);
bool isPalindrome = kaibun(processed_str, len + 1);
printf("len: %d\n", len);
bool isPalindrome = kaibun(t, len + 1);
printf("isPalindrome: %d\n", isPalindrome);
printf("isPalindrome: %s\n", isPalindrome ? "true" : "false");
return 0;
}