在C語言中,沒有直接提供substr函數,但可以通過其他方式實現類似的功能。以下是一種常見的實現方式:
#include <stdio.h>
#include <string.h>
void substr(char* src, int start, int len, char* dest) {
int srcLen = strlen(src);
if (start >= srcLen) {
dest[0] = '\0'; // 如果起始位置超過字符串長度,則返回空字符串
return;
}
int end = start + len;
if (end > srcLen) {
end = srcLen;
}
strncpy(dest, src + start, end - start);
dest[end - start] = '\0'; // 手動在截取的子字符串末尾添加字符串結束符
}
int main() {
char src[] = "Hello, world!";
char dest[20];
substr(src, 7, 5, dest);
printf("%s\n", dest); // 輸出 "world"
return 0;
}
在上面的代碼中,substr函數接受四個參數:源字符串src、起始位置start、截取長度len以及目標字符串dest。它首先計算源字符串的長度srcLen,然后根據start和len計算出截取的結束位置end。如果start大于等于源字符串的長度,則直接將目標字符串置為空字符串。否則,使用strncpy函數從源字符串中截取子字符串,并手動在末尾添加字符串結束符。最后,通過printf函數輸出截取的子字符串。