题解 | 计算某字符出现次数
计算某字符出现次数
https://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* readline() {
    int buffer_size = 128;
    char ch;
    char* buffer = (char*)malloc(buffer_size * sizeof(char));
    size_t inputlen = 0;
    memset(buffer, 0, buffer_size);
    while ((ch = getchar()) != '\n' && ch != EOF) {
        inputlen++;
        if (inputlen >= buffer_size) {
            buffer_size *= 2;
            buffer = (char*)realloc(buffer, buffer_size * sizeof(char));
        }
        buffer[inputlen - 1] = ch ;
    }
    buffer[inputlen] = '\0';
  
    return buffer;
}
bool is_alph(char dst) {
    return (dst >= 'a' && dst <= 'z') || (dst >= 'A' && dst <= 'Z');
}
bool is_big_alph(char dst) {
    return (dst >= 'A' && dst <= 'Z');
}
int main() {
    char dst = ' ';
    int count = 0;
    char* str = readline();
    scanf("%c", &dst);
    bool isalph = is_alph(dst);
    bool isbigalph = false;
    if (isalph) {
        if (is_big_alph(dst)) {
            isbigalph = true;
        }
    }
    for (int i = 0; i < strlen(str); i++) {
        if (!isalph) {
            if (str[i] == dst) {
                count++;
            }
            continue;
        } else {
            if (isbigalph) {
                if ((str[i] == dst) || (str[i] == (dst + ('a' - 'A'))))  {
                    count++;
                }
            } else {
                if ((str[i] == dst) || (str[i] == (dst - ('a' - 'A')))) {
                    count++;
                }
            }
        }
    }
    printf("%d", count);
    return 0;
}



