c语言判断是否以某个字符串开头,以某个字符串结尾

#include <stdio.h>
#include <string.h>

/**
* 字符串originString以字符串prefix开头,返回0;否则返回1;异常返回-1
*/
int startWith(const char *originString, char *prefix) {
	// 参数校验
	if (originString == NULL || prefix == NULL || strlen(prefix) > strlen(originString)) {
		printf("参数异常,请重新输入!\n");
		return -1;
	}
	
	int n = strlen(prefix);
	int i;
	for (i = 0; i < n; i++) {
	    if (originString[i] != prefix[i]) {
		    return 1;
		}
	}
	return 0;
}

/**
* 字符串originString以字符串end结尾,返回0;否则返回1;异常返回-1
*/
int endWith(const char *originString, char *end) {
	// 参数校验
	if (originString == NULL || end == NULL || strlen(end) > strlen(originString)) {
		printf("参数异常,请重新输入!\n");
		return -1;
	}
	
	int n = strlen(end);
	int m = strlen(originString);
	int i;
	for (i = 0; i < n; i++) {
	    if (originString[m-i-1] != end[n-i-1]) {
		    return 1;
		}
	}
	return 0;
}

int main()
{
   char a[128] = "12345";
   char b[128] = "1";
   char *c = "2";
	
   char e[128] = "12345";
   char f[128] = "5";
   char *g = "4";
	
   printf("Flag1 = %d\n", startWith(a, b));
   printf("Flag2 = %d\n", startWith(a, c));
	
   printf("Flag3 = %d\n", endWith(e, f));
   printf("Flag4 = %d\n", endWith(e, g));

   return 0;
}

下面为方便非csdn用户复制代码:

#include <stdio.h>
#include <string.h>

/**
* 字符串originString以字符串prefix开头,返回0;否则返回1;异常返回0
*/
int startWith(const char *originString, char *prefix) {
    // 参数校验
    if (originString == NULL || prefix == NULL || strlen(prefix) > strlen(originString)) {
        printf("参数异常,请重新输入!\n");
        return -1;
    }
    
    int n = strlen(prefix);
    int i;
    for (i = 0; i < n; i++) {
        if (originString[i] != prefix[i]) {
            return 1;
        }
    }
    return 0;
}

/**
* 字符串originString以字符串end结尾,返回0;否则返回1;异常返回0
*/
int endWith(const char *originString, char *end) {
    // 参数校验
    if (originString == NULL || end == NULL || strlen(end) > strlen(originString)) {
        printf("参数异常,请重新输入!\n");
        return -1;
    }
    
    int n = strlen(end);
    int m = strlen(originString);
    int i;
    for (i = 0; i < n; i++) {
        if (originString[m-i-1] != end[n-i-1]) {
            return 1;
        }
    }
    return 0;
}

int main()
{
   char a[128] = "12345";
   char b[128] = "1";
   char *c = "2";
    
   char e[128] = "12345";
   char f[128] = "5";
   char *g = "4";
    
   printf("Flag1 = %d\n", startWith(a, b));
   printf("Flag2 = %d\n", startWith(a, c));
    
   printf("Flag3 = %d\n", endWith(e, f));
   printf("Flag4 = %d\n", endWith(e, g));

   return 0;
}

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 判断一个字符串是否为回文字符串,可以采用双指针法。具体步骤如下: 1. 定义两个指针,一个指向字符串开头,一个指向字符串结尾。 2. 每次比较两个指针所指向的字符是否相等,如果不相等,则该字符串不是回文字符串。 3. 如果相等,则将两个指针向中间移动,继续比较下一个字符,直到两个指针相遇或者交叉。 4. 如果两个指针相遇或者交叉,说明该字符串是回文字符串。 下面是一个示例代码: ```c #include <stdio.h> #include <string.h> int isPalindrome(char *str) { int len = strlen(str); int left = 0, right = len - 1; while (left < right) { if (str[left] != str[right]) { return 0; } left++; right--; } return 1; } int main() { char str[100]; printf("请输入一个字符串:"); scanf("%s", str); if (isPalindrome(str)) { printf("%s是回文字符串\n", str); } else { printf("%s不是回文字符串\n", str); } return 0; } ``` 在上面的代码中,isPalindrome函数用于判断一个字符串是否为回文字符串。如果是回文字符串,返回1,否则返回0。在主函数中,先输入一个字符串,然后调用isPalindrome函数进行判断,最后输出结果。 ### 回答2: 回文字符串指的是正着读和倒着读都一样的字符串,比如"level"、"racecar"等。下面我将介绍如何用C语言判断一个字符串是否为回文字符串。 首先,我们要明确如何判断一个字符串是否为回文字符串。其实很简单,只需要将字符串正着读一遍,再倒着读一遍,如果两遍结果都一样,那么这个字符串就是回文字符串。 接下来,我们考虑如何用C语言实现这个判断功能。首先,我们定义一个字符数组来存储要判断字符串,如下所示: char str[100]; 然后,我们使用C语言中的gets函数来读入用户输入的字符串,如下所示: gets(str); 接着,我们定义两个指针变量i和j,i指向字符串的起始位置,j指向字符串的末尾位置,如下所示: int i = 0, j = strlen(str) - 1; 其中,strlen(str)函数用来获取字符串的长度,由于字符串是从0开始计数的,所以末尾位置要减1。 接下来,我们使用while循环来判断正着读和倒着读是否一样,如果一样就继续下一个字符的判断,如果不一样就说明这个字符串不是回文字符串,可以直接退出循环,如下所示: while(i < j) { if(str[i] != str[j]) { printf("Not a palindrome."); break; } i++; j--; } 最后,如果跑完while循环之后没有遇到不一样的字符,那么这个字符串就是回文字符串,可以输出提示消息,如下所示: if(i >= j) { printf("Palindrome!"); } 完整代码如下所示: #include <stdio.h> #include <string.h> int main() { char str[100]; int i = 0, j; printf("Enter a string: "); gets(str); j = strlen(str) - 1; while(i < j) { if(str[i] != str[j]) { printf("Not a palindrome."); break; } i++; j--; } if(i >= j) { printf("Palindrome!"); } return 0; } 这样,我们就通过C语言实现了判断一个字符串是否为回文字符串的功能。 ### 回答3: 回文字符串是指正着读和反着读都是一样的字符串,比如“level”、“racecar”等。 C语言判断一个字符串是否为回文字符串可以用以下的步骤: 1. 首先,输入一个字符串判断字符串的长度是否大于等于2,因为只有长度大于等于2的字符串才可能是回文字符串。 2. 接下来,定义两个指针分别指向字符串的头和尾,分别用变量left和right表示。 3. 然后,使用while循环判断left和right所指向的字符是否相同,如果相同,则继续比较下一个字符,否则,就证明该字符串不是回文字符串,可以直接返回false。 4. 在while循环的条件为left < right时,当left和right指向的字符一样时,就将left右移一位,将right左移一位,同时继续比较这两个指针所指向的字符是否相同。 5. 直到left >= right时,就证明该字符串是回文字符串,可以返回true。 下面是完整的代码实现: ```c #include <stdio.h> #include <string.h> int isPalindrome(char *str) { int len = strlen(str); if (len < 2) { return 0; } int i, left = 0, right = len - 1; while (left < right) { if (str[left] != str[right]) { return 0; } left++; right--; } return 1; } int main() { char str[100]; printf("请输入字符串:"); scanf("%s", str); if (isPalindrome(str)) { printf("%s 是回文字符串", str); } else { printf("%s 不是回文字符串", str); } return 0; } ``` 在上面的代码中,先输入一个字符串,然后调用isPalindrome函数判断字符串是否为回文字符串。如果是回文字符串,则输出“该字符串是回文字符串”,否则输出“该字符串不是回文字符串”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值