第 9 章專注字符串處理:分類統計、複製、連接、查找、加密等經典算法。
用 ctype.h (isalpha、isdigit 等) 統計控制字符、空白、數字、大小寫、標點、不可打印字符個數與佔比。
// my_strcpy: 限制長度防溢出
void my_strcpy(char *dst, char *src) {
size_t n = strlen(dst) < strlen(src) ? strlen(dst) : strlen(src);
strncpy(dst, src, n);
}
// my_strcat: 確保目標緩衝區不溢出
void my_strcat(char *dst, char *src) {
size_t space = MAX - strlen(dst) - 1;
strncat(dst, src, space < strlen(src) ? space : strlen(src));
}
char *my_strcpy_end(char *dst, char *src) {
if (strlen(dst) >= strlen(src)) strcpy(dst, src);
else strncpy(dst, src, strlen(dst));
while (*dst) dst++;
return dst; // 指向結束符
}
char *my_strnchr(const char *s, int ch, int n) {
for (int i=0; i
int count_chars(const char *s, const char *set) {
int cnt = 0;
while ((s = strpbrk(s, set))) { cnt++; s++; }
return cnt;
}
int palindrome(char *s) {
char *t = malloc(strlen(s)+1);
int j=0;
for (int i=0; s[i]; i++) if (isalpha(s[i])) t[j++] = tolower(s[i]);
t[j] = '\0';
for (int i=0; i
構建密鑰字母表 (去重關鍵字 + 剩餘字母),建立雙向映射表,實現加密 encrypt 與解密 decrypt。
從右向左每三位插入逗號,小數點後固定兩位,不足補零。
格式串含 #、,、.,從右向左將數字填入 # 位,其餘字符保留,不足填 0/空格。