c++编制如下函数原形的函数:int index(const char *str, char c),这个函数返回字符串str中第一次出现字符c的位置,不使用strchar
时间: 2024-10-27 20:08:14 浏览: 36
这个C++函数原型 `int index(const char *str, char c)` 的功能是在给定的字符串 `str` 中查找字符 `c` 首次出现的位置。如果没有找到该字符,则返回 `-1` 或类似表示未找到的结果。因为不使用标准库函数 `strstr()`,所以你需要编写一段自定义的循环逻辑来遍历整个字符串。
函数实现大致如下:
```cpp
#include <string.h> // 只是为了引用常量MAX_CHAR
// 定义一个足够大的整数来存储索引,避免溢出
const int MAX_CHAR = 256;
int index(const char *str, char c) {
if (str == nullptr) { // 检查指针是否为空
return -1;
}
for (int i = 0; str[i] != '\0'; i++) { // 遍历直到遇到字符串结束符'\0'
if (str[i] == c) { // 如果当前字符等于目标字符
return i; // 返回当前索引
}
}
return -1; // 如果遍历完都没有找到,返回 -1 表示未找到
}
相关问题
1.编写一函数实现对起始地址是a,长度是n的整型数组从小到大排序。函数原型为:void sort(int *a, int n); 2.编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。比如字符串"abbcccaddd"子串有"bb"、"cc"、"cc"、"dd"、"dd"、"ccc"和"ddd",共7个。函数原型为:int fun(const char *str); 3.编写一个函数,接收一个字符串,统计其中数字字符个数及字母字符个数。函数原型为:void fun(const char *str, int* char_N, int* letter_N);
好的,我可以回答你的问题。
1. 实现对整型数组从小到大排序的函数可以使用冒泡排序算法,代码如下:
```C++
void sort(int *a, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
```
2. 统计子串个数的函数可以使用双重循环,在内循环中判断相邻字符是否相同,如果相同则计数器加一。代码如下:
```C++
int fun(const char *str) {
int cnt = 0;
int len = strlen(str);
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (str[j] == str[j - 1]) {
cnt++;
} else {
break;
}
}
}
return cnt;
}
```
3. 统计数字字符个数和字母字符个数的函数可以使用循环遍历字符串,判断每个字符是否为数字或字母,如果是则对应计数器加一。代码如下:
```C++
void fun(const char *str, int* char_N, int* letter_N) {
*char_N = 0;
*letter_N = 0;
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
(*char_N)++;
} else if (isalpha(str[i])) {
(*letter_N)++;
}
}
}
```
希望以上答案能对你有所帮助!
写一个函数用来判定一个字符串是否比另一个字符串更长。要求用到strlen函数,它的原型如下: Size_t strlen(const char *s); 如果这个函数是这样的: int strlonger(char *s,char *t) { return strlen(s)-strlen(t)>0; }
好的,您的问题是如何写一个函数用来判定一个字符串是否比另一个字符串更长,函数的要求是要使用到strlen函数。下面是一个示例函数实现:
```c
#include <stdio.h>
#include <string.h>
int strlonger(char *s, char *t) {
return strlen(s) > strlen(t);
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("str1 is longer than str2: %d\n", strlonger(str1, str2));
return 0;
}
```
这个函数使用了strlen函数来获取字符串s和t的长度,然后比较它们的长度大小,如果s的长度大于t的长度,则返回1,否则返回0。在主函数中,我们定义了两个字符串变量,并使用strlonger函数来比较它们的长度大小,最终输出比较结果。
希望我的回答能够解决您的问题!
阅读全文