刷題遇到「不調用任何庫函數實現字符串拼接」,許多人寫得過於複雜甚至上鏈表。核心只有一點:**C 字符串以 `\0` 結尾**。掌握這點,幾行代碼即可 AC。
#include <stdio.h>
#include <stdlib.h>
void contact(char *str, const char *str1, const char *str2);
int main() {
char str[201], str1[101], str2[101];
while (scanf("%s%s", str1, str2) != EOF) {
contact(str, str1, str2);
printf("%s\n", str);
}
return 0;
}
void contact(char *str, const char *str1, const char *str2) {
int i, j;
for (i = 0; str1[i] != '\0'; i++) str[i] = str1[i]; // 複製 str1
for (j = 0; str2[j] != '\0'; j++) str[i + j] = str2[j]; // 接續 str2
str[i + j] = '\0'; // 關鍵:補終結符
}
// strcpy
void my_strcpy(char *dst, const char *src) {
while ((*dst++ = *src++));
}
// strcat
void my_strcat(char *dst, const char *src) {
while (*dst) dst++; // 定位到 \0
while ((*dst++ = *src++));
}
面試手寫字符串操作,**只要記住 `\0` 遍歷拷貝**,所有變體信手拈來。