编写一函数strend(s, t),如果字符串t出现在字符串s的尾部,该函数返回1,否则返回0。要求在main函数中测试该函数:先从键盘输入字符串s、t(不超过100个字符),然后调用该函数,并输出返回的结果。 【输入形式】 从键盘分行输入两个字符串:s,t 【输出形式】 输出有两种可能,Yes或No。C语言
时间: 2023-06-20 13:04:28 浏览: 298
sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期
以下是可能的C语言实现:
```c
#include <stdio.h>
#include <string.h>
int strend(char *s, char *t) {
int slen = strlen(s);
int tlen = strlen(t);
if (tlen > slen) {
return 0;
}
return strcmp(s + slen - tlen, t) == 0;
}
int main() {
char s[100], t[100];
fgets(s, 100, stdin);
fgets(t, 100, stdin);
s[strcspn(s, "\n")] = 0; // 去除换行符
t[strcspn(t, "\n")] = 0;
if (strend(s, t)) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
函数`strend`接收两个字符串指针`s`和`t`,判断`t`是否位于`s`的尾部。它首先计算`s`和`t`的长度,如果`t`的长度大于`s`的长度,则`t`肯定不会位于`s`的尾部,直接返回0。否则,它调用`strcmp`函数比较`s`的尾部子字符串和`t`是否相等。如果相等,则返回1,否则返回0。
在`main`函数中,先从标准输入读入两个字符串,使用`fgets`函数避免输入缓冲区溢出的问题。接着,去除每个字符串的末尾换行符,并调用`strend`函数判断`t`是否位于`s`的尾部。最后,根据返回值输出"Yes"或"No"。
阅读全文