C语言 不使用C语言提供的字符串函数,编写函数fun(char*a),其功能是将字符中的前导*号全部删除,中间和尾部的*号不能删除。例如,字符串中的内容为:****A*BC*DF*G*******,删除后,字符串中的内容是:A*BC*DF*G*******。
时间: 2024-03-30 07:32:24 浏览: 76
你可以使用以下代码来实现这个功能:
```c
#include <stdio.h>
void fun(char* a) {
int i = 0;
int j = 0;
int flag = 0; // 标记是否已经遇到非*字符
// 遍历字符串,将前导*号删除
while (a[i] ! '\0') {
if (a[i] == '*' && flag == 0) {
i++;
} else {
flag = 1;
a[j++] = a[i++];
}
}
// 在字符串末尾添加结束符
a[j] = '\0';
}
int main() {
char str[] = "****A*BC*DF*G*******";
printf("原始字符串:%s\n", str);
fun(str);
printf("删除前导*号后的字符串:%s\n", str);
return 0;
}
```
运行结果为:
```
原始字符串:****A*BC*DF*G*******
删除前导*号后的字符串:A*BC*DF*G*******
```
相关问题
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。
好的,这是一个比较简单的字符串处理题目。我们可以使用两个指针,一个指向字符串的头部,一个指向字符串的尾部,然后分别向中间移动指针,遇到*号就跳过,遇到字母就将其复制到前面的位置。具体实现可以参考下面的代码:
```c
void fun(char *h, char *p) {
char *src = h;
char *dst = h;
while (*src == '*') { // 跳过开头的*
src++;
}
while (p > src && *p == '*') { // 跳过结尾的*
p--;
}
while (src <= p) { // 复制非*号的字符
if (*src != '*') {
*dst = *src;
dst++;
}
src++;
}
while (dst <= p) { // 将剩余的位置填充*
*dst = '*';
dst++;
}
}
```
这个函数的思路比较简单,首先跳过字符串头部和尾部的*号,然后将指针src从头部向尾部移动,遇到非*号的字符就复制到指针dst所指的位置。最后,将剩余的位置填充*号即可。
假定输入的字符串中只包含字母和号。请编写函数fun(),它的功能是:除了字符串前导的×之外,将字符串中其他×号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容则应当是****ABCDEFG。
好的,这是一个比较简单的字符串处理问题,可以按照以下步骤实现:
1. 首先判断字符串中前导的 * 号的个数,记录下来;
2. 然后从前往后遍历字符串,遇到 * 号就将其删除;
3. 遍历完成后,在字符串前面加上前导的 * 号。
下面是实现该功能的代码:
```c
#include <stdio.h>
void fun(char *str) {
int len = 0;
while (str[len] != '\0') {
len++;
}
int prefix = 0;
while (str[prefix] == '*') {
prefix++;
}
int i, j;
for (i = prefix, j = prefix; i < len; i++) {
if (str[i] != '*') {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
for (i = 0; i < prefix; i++) {
printf("*");
}
printf("%s", str + prefix);
}
int main() {
char str[] = "****A*BC*DEF*G******";
fun(str);
return 0;
}
```
输出结果为:
```
****ABCDEFG
```
函数 fun() 的参数为一个指向字符串的指针,可以在 main() 函数中调用该函数,将需要处理的字符串作为参数传入。这段代码中,我们使用了两个指针 i 和 j,分别指向原字符串和处理后的字符串中当前需要处理的字符位置。同时,我们也避免使用了 C 语言提供的字符串函数,实现了函数功能。
阅读全文