如何用C语言去除字符串'hdhshxdjrhdhdyxhchdhr*******jerbzhxhfbdbdh*******'尾部的*
时间: 2024-06-25 13:00:52 浏览: 78
C# 去除首尾字符或字符串的方法
在C语言中,要去除字符串尾部的特定字符(如'*'),你可以遍历字符串,从后往前查找目标字符,找到后就停止遍历,并将该位置之前的部分作为新的字符串。这里有一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char* remove_trailing_star(char* str, char target);
int main() {
char str[] = "hdhshxdjrhdhdyxhchdhr*******jerbzhxhfbdbdh*******";
char* new_str = remove_trailing_star(str, '*');
printf("原字符串: %s\n", str);
printf("新字符串: %s\n", new_str);
// 释放动态分配的内存
free(new_str);
return 0;
}
// 函数定义
char* remove_trailing_star(char* str, char target) {
int i = strlen(str) - 1; // 从字符串尾部开始计数
while (i >= 0 && str[i] != target) {
i--;
}
if (i < 0) {
return str; // 如果没有找到目标字符,返回原始字符串
}
char* new_str = (char*)malloc(strlen(str) - (i+1)); // 动态分配新字符串的内存
strncpy(new_str, str, i + 1); // 复制到新字符串直到不包含目标字符
new_str[strlen(str) - (i + 1)] = '\0'; // 添加终止符
return new_str;
}
```
运行这个程序,你会得到去除了尾部星号的新字符串。相关问题如下:
1. 如何使用C语言处理字符串操作?
2. 动态内存分配在C语言中如何使用?
3. 字符串处理函数`strncpy()`和`strlen()`的作用是什么?
阅读全文