การสร้างเครื่องมืออักขระ
ตัวอย่างการใช้งานจริง
การสร้างเครื่องมืออักขระ เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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 ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างเครื่องมืออักขระ”
ตัวอย่างการใช้งานจริง คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างเครื่องมืออักขระ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อักขระในฐานะจำนวนเต็ม
- ไลบรารี ctype
- การอ่านอักขระ
- การสร้างเครื่องมืออักขระ