在C语言中,可以使用指针来判断一个字符串是否以另一个字符串结尾。以下是一个详细的步骤和示例代码:
以下是一个使用指针判断一个C字符串是否以另一个C字符串结尾的示例代码:
#include <stdio.h>
#include <string.h>
// 函数声明
int ends_with(const char *str, const char *suffix);
int main() {
const char *str = "Hello, World!";
const char *suffix = "World!";
if (ends_with(str, suffix)) {
printf("'%s' ends with '%s'\n", str, suffix);
} else {
printf("'%s' does not end with '%s'\n", str, suffix);
}
return 0;
}
// 函数定义:判断str是否以suffix结尾
int ends_with(const char *str, const char *suffix) {
// 获取两个字符串的长度
size_t str_len = strlen(str);
size_t suffix_len = strlen(suffix);
// 如果suffix比str长,直接返回0(false)
if (suffix_len > str_len) {
return 0;
}
// 使用指针从str末尾向前移动suffix_len个字符
const char *str_end = str + str_len - suffix_len;
// 比较两个指针指向的字符串
return strcmp(str_end, suffix) == 0;
}
strlen
函数获取两个字符串的长度。false
。strcmp
函数比较两个指针指向的字符串是否相等。NULL
。NULL
。int ends_with(const char *str, const char *suffix) {
if (str == NULL || suffix == NULL) {
return 0; // 或者根据需求抛出错误
}
size_t str_len = strlen(str);
size_t suffix_len = strlen(suffix);
if (suffix_len > str_len) {
return 0;
}
const char *str_end = str + str_len - suffix_len;
return strcmp(str_end, suffix) == 0;
}
通过这种方式,可以有效地判断一个C字符串是否以另一个C字符串结尾,并且避免了常见的指针操作问题。
领取专属 10元无门槛券
手把手带您无忧上云