用c语言编写一个fun函数求a所指字符串中指定字符的个数并返回此值。(例如若输入字符串abcdefg,且输入的字符为c,则返回3
时间: 2023-05-19 17:01:54 浏览: 96
以下是用 C 语言编写的 fun 函数,用于计算 a 所指字符串中指定字符的个数并返回此值:
```c
int fun(char *a, char c) {
int count = 0;
while (*a != '\0') {
if (*a == c) {
count++;
}
a++;
}
return count;
}
```
调用该函数的方式如下:
```c
char str[] = "abcdefg";
char c = 'c';
int count = fun(str, c);
printf("The count of '%c' in '%s' is %d\n", c, str, count);
```
输出结果为:
```
The count of 'c' in 'abcdefg' is 1
```
如果输入的字符为 c,则返回值应该是 1,而不是 3。
相关问题
C语言编写规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******删除后字符串中的内容应当是:ABCDEFG。
可以编写如下的函数来实现删除字符串中所有的*号:
```c
void fun(char *str) {
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != '*') {
str[j++] = str[i];
}
}
str[j] = '\0';
}
```
这个函数中使用了两个指针 i 和 j,其中 i 指向原始字符串中当前要处理的字符,j 指向新字符串中当前要存储的位置。当 i 指向的字符不是*号时,就将它存储到新字符串中,并将 j 向后移动一个位置。当 i 遍历完整个字符串后,将新字符串的结尾标记设置为'\0'。
假定输入的字符串中只包含字母和*号。请编写函数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所指的位置。最后,将剩余的位置填充*号即可。
阅读全文