编写程序,从键盘输入一个字符ch,在字符串中查找是否存在该字符,若存在,则给出该字符在字符串中出现所有的位置。要求设计函数char * search(char *str,char c),其功能为:在str所指的字符串中,查找是否有字符变量c的字符,如果有,则返回字符串中相同字符的地址,如果没有,则返回NULL。
时间: 2023-09-09 09:13:30 浏览: 93
C语言中查找字符在字符串中出现的位置的方法
以下是实现该功能的代码:
```c
#include <stdio.h>
#include <string.h>
char *search(char *str, char c) {
int len = strlen(str);
char *pos = NULL;
for (int i = 0; i < len; i++) {
if (str[i] == c) {
if (pos == NULL) {
pos = &str[i];
} else {
printf("'%c' is found at index %d and %d\n", c, pos - str, i);
}
}
}
if (pos == NULL) {
printf("'%c' is not found in the string\n", c);
} else if (pos != &str[len]) {
printf("'%c' is found at index %d\n", c, pos - str);
}
return pos;
}
int main() {
char str[100], ch;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
printf("Enter a character to search: ");
scanf("%c", &ch);
search(str, ch);
return 0;
}
```
首先在 `search` 函数中,我们遍历字符串中的每个字符,如果找到了和输入的字符相同的字符,我们将其地址保存在 `pos` 变量中。注意,如果字符串中有多个相同的字符,我们需要输出所有出现位置的下标。
最后,如果 `pos` 仍然是 `NULL`,那么说明字符串中没有找到输入的字符。如果 `pos` 不是 `NULL` 但是不等于字符串的末尾,说明找到了输入的字符,我们需要输出其第一次出现的位置。如果 `pos` 等于字符串的末尾,说明字符串最后一个字符也是输入的字符,我们不需要再输出一遍。
在 `main` 函数中,我们首先输入字符串,并且使用 `fgets` 函数来读入一整行。然后,我们输入要查找的字符,并调用 `search` 函数来查找该字符在字符串中的出现位置。
阅读全文