C Academy · 课时

构建字符工具

实际示例

第 4 / 4 课13 个步骤

构建字符工具 是 CoddyKit 上的免费 C Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C Academy 课程共包含 4 节课。

综合运用所学知识

现在,您可以结合 char 算术、ctype 库和字符串循环,构建一些小型实用的字符工具。

让我们编写几个常见的辅助函数。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = 'g';
    printf("Upper: %c\n", toupper(c));
    return 0;
}

统计元音

元音计数器会检查每个字符,看它是否属于 a、e、i、o、u(不区分大小写)。

#include <stdio.h>
#include <ctype.h>

int count_vowels(const char *s) {
    int n = 0;
    for (int i = 0; s[i]; i++) {
        char c = tolower(s[i]);
        if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') n++;
    }
    return n;
}

int main(void) {
    printf("%d\n", count_vowels("Education"));
    return 0;
}

反转字符串

从字符串两端向中间移动并交换字符,就可以原地反转字符串。

#include <stdio.h>
#include <string.h>

int main(void) {
    char s[] = "hello";
    int n = strlen(s);
    for (int i = 0; i < n / 2; i++) {
        char tmp = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = tmp;
    }
    printf("%s\n", s);
    return 0;
}

检查回文

回文正读和反读都相同。比较相互对应的位置,直到它们相遇。

#include <stdio.h>
#include <string.h>

int is_palindrome(const char *s) {
    int i = 0, j = strlen(s) - 1;
    while (i < j) {
        if (s[i] != s[j]) return 0;
        i++; j--;
    }
    return 1;
}

int main(void) {
    printf("%d\n", is_palindrome("level"));
    printf("%d\n", is_palindrome("world"));
    return 0;
}

切换大小写

大小写切换器会将大写变为小写,将小写变为大写,并保持非字母字符不变。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello World";
    for (int i = 0; s[i]; i++) {
        if (isupper(s[i])) s[i] = tolower(s[i]);
        else if (islower(s[i])) s[i] = toupper(s[i]);
    }
    printf("%s\n", s);
    return 0;
}

去除非数字字符

只保留字符串中的数字字符,这对清理电话号码很有用。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "(555) 123-4567";
    for (int i = 0; s[i]; i++) {
        if (isdigit((unsigned char)s[i])) putchar(s[i]);
    }
    putchar('\n');
    return 0;
}

手动实现 atoi

通过累积每个数字,将数字字符串转换为整数:将当前总数乘以 10,再加上该数字的值。

#include <stdio.h>
#include <ctype.h>

int my_atoi(const char *s) {
    int n = 0;
    for (int i = 0; isdigit((unsigned char)s[i]); i++) {
        n = n * 10 + (s[i] - '0');
    }
    return n;
}

int main(void) {
    printf("%d\n", my_atoi("427") + 3);
    return 0;
}

统计单词数

通过检测从空白字符到非空白字符的转换来统计单词数。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "the quick brown fox";
    int words = 0, in_word = 0;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) in_word = 0;
        else if (!in_word) { in_word = 1; words++; }
    }
    printf("words = %d\n", words);
    return 0;
}

将单词首字母大写

将每个单词的第一个字母转换为大写:如果某个字母前面是空白字符,或者它位于字符串开头,就将其转换为大写。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "hello there friend";
    int start = 1;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) start = 1;
        else { if (start) s[i] = toupper(s[i]); start = 0; }
    }
    printf("%s\n", s);
    return 0;
}

ROT13 密码

ROT13 会将每个字母移动 13 位,并在字母表末尾循环。应用两次后会恢复原文。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        char c = s[i];
        if (isupper(c)) s[i] = 'A' + (c - 'A' + 13) % 26;
        else if (islower(c)) s[i] = 'a' + (c - 'a' + 13) % 26;
    }
    printf("%s\n", s);
    return 0;
}

字符出现频率

通过简单的循环和比较,统计某个特定字符在字符串中出现的次数。

#include <stdio.h>

int main(void) {
    char *s = "mississippi";
    char target = 's';
    int count = 0;
    for (int i = 0; s[i]; i++) {
        if (s[i] == target) count++;
    }
    printf("'%c' appears %d times\n", target, count);
    return 0;
}

快速检查

检验您的字符工具编程技能。

回顾

您构建了实用的字符工具:

  • 统计元音、单词数和字符出现频率。
  • 反转字符串并检查回文。
  • 切换大小写并将单词首字母大写。
  • 手动实现 atoi 和 ROT13 密码。
免费开始

用 AI 导师学习 C — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
39
课程
144

常见问题解答

「构建字符工具」课时是免费的吗?

是的 — 「构建字符工具」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C Academy 课程的其余内容,请升级到 CoddyKit PRO。 C Academy 课程共包含 4 节课。

「构建字符工具」这节课中我会学到什么?

实际示例 你通过在浏览器中直接运行的动手代码来练习 C Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「构建字符工具」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C Academy 课中编写并运行代码吗?

能。每节 C Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 将字符视为整数
  2. ctype 库
  3. 读取字符
  4. 构建字符工具
← 返回 C Academy