mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-07 00:20:43 +08:00
添加视频压缩代码
This commit is contained in:
120
others/C/video_compression/src/string_utils.c
Normal file
120
others/C/video_compression/src/string_utils.c
Normal file
@@ -0,0 +1,120 @@
|
||||
#include "string_utils.h"
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
char* str_copy(char* dest, const char* src, size_t dest_size) {
|
||||
if (dest == NULL || src == NULL || dest_size == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t i;
|
||||
for (i = 0; i < dest_size - 1 && src[i] != '\0'; i++) {
|
||||
dest[i] = src[i];
|
||||
}
|
||||
dest[i] = '\0';
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
char* str_concat(char* dest, const char* src, size_t dest_size) {
|
||||
if (dest == NULL || src == NULL || dest_size == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t dest_len = strlen(dest);
|
||||
if (dest_len >= dest_size) {
|
||||
return dest;
|
||||
}
|
||||
|
||||
size_t i;
|
||||
for (i = 0; i < dest_size - dest_len - 1 && src[i] != '\0'; i++) {
|
||||
dest[dest_len + i] = src[i];
|
||||
}
|
||||
dest[dest_len + i] = '\0';
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
char* str_trim(char* str) {
|
||||
if (str == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char* end;
|
||||
|
||||
// 去除前导空白字符
|
||||
while (isspace((unsigned char)*str)) {
|
||||
str++;
|
||||
}
|
||||
|
||||
// 如果全是空白字符
|
||||
if (*str == '\0') {
|
||||
return str;
|
||||
}
|
||||
|
||||
// 去除尾部空白字符
|
||||
end = str + strlen(str) - 1;
|
||||
while (end > str && isspace((unsigned char)*end)) {
|
||||
end--;
|
||||
}
|
||||
|
||||
// 写入终止符
|
||||
*(end + 1) = '\0';
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
int str_starts_with(const char* str, const char* prefix) {
|
||||
if (str == NULL || prefix == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t len_str = strlen(str);
|
||||
size_t len_prefix = strlen(prefix);
|
||||
|
||||
if (len_prefix > len_str) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return strncmp(str, prefix, len_prefix) == 0;
|
||||
}
|
||||
|
||||
int str_ends_with(const char* str, const char* suffix) {
|
||||
if (str == NULL || suffix == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t len_str = strlen(str);
|
||||
size_t len_suffix = strlen(suffix);
|
||||
|
||||
if (len_suffix > len_str) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return strncmp(str + len_str - len_suffix, suffix, len_suffix) == 0;
|
||||
}
|
||||
|
||||
char* str_to_lower(char* str) {
|
||||
if (str == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (char* p = str; *p != '\0'; p++) {
|
||||
*p = tolower((unsigned char)*p);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
char* str_to_upper(char* str) {
|
||||
if (str == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (char* p = str; *p != '\0'; p++) {
|
||||
*p = toupper((unsigned char)*p);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
Reference in New Issue
Block a user