Psl/ตัวอย่างการเขียนพอยน์เตอร์กับสตริง
หน้านี้รวมตัวอย่างการเขียนพอยน์เตอร์กับสตริง
สตริงในภาษาซีเก็บเป็นอาร์เรย์ของ char โดยมีอักขระหมายเลข 0 เป็นตัวปิดท้าย (null-terminated string) ในหลาย ๆ กรณีเราสามารถจัดการสตริงได้สะดวกด้วยพอยน์เตอร์
การหาความยาว
ในภาษาซี เรามีฟังก์ชัน strlen สำหรับหาความยาวของสตริง ในตัวอย่างนี้ เราทดลองเขียนฟังก์ชันดังกล่าวโดยใช้พอยน์เตอร์
#include <cstdio>
int mystrlen(char* st)
{
int l = 0;
char* p = st;
while(*p != '\0') {
p++;
l++;
}
return l;
}
char buffer[1000];
main()
{
scanf("%s", buffer);
printf("%d\n", mystrlen(buffer));
}
การคัดลอกสตริง
ในภาษาซี เรามีฟังก์ชัน strcpy สำหรับหาความยาวของสตริง ในตัวอย่างนี้ เราทดลองเขียนฟังก์ชันดังกล่าวโดยใช้พอยน์เตอร์ สังเกตว่าฟังก์ชัน mystrcpy นั้นคืนค่า pointer ของสตริงปลายทางมาด้วย เราเขียนกรณีดังกล่าวเผื่อไว้สำหรับการใช้งานที่สะดวกขึ้น เช่น เราอาจจะสั่ง printf("%s\n", mystrcpy(dst,src)); ได้เลย
#include <cstdio>
char* mystrcpy(char* dest, char* src)
{
int l = 0;
char* sp = src;
char* dp = dest;
while(*sp != '\0') {
*dp = *sp;
sp++;
dp++;
}
*dp = '\0';
return dest;
}
char buffer[1000];
char outbuffer[1000];
main()
{
scanf("%s", buffer);
mystrcpy(outbuffer, buffer);
printf("%s\n", outbuffer);
}