c中查询字符数组中指定字符的位置
时间: 2023-10-30 18:07:14 浏览: 226
在 C 语言中,要查询字符数组中指定字符的位置,可以使用 `strchr()` 函数。该函数的原型如下:
```c
char *strchr(const char *str, int c);
```
其中,`str` 是要查询的字符串,`c` 是要查找的字符。函数返回一个指向第一个匹配字符的指针,如果未找到该字符,则返回 `NULL`。
例如,要在字符数组 `"hello"` 中查找字符 `'e'` 的位置,可以这样做:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello";
char *ptr = strchr(str, 'e');
if (ptr != NULL) {
printf("The index of 'e' is %d\n", (int)(ptr - str));
} else {
printf("The character is not found\n");
}
return 0;
}
```
输出结果为:
```
The index of 'e' is 1
```
这个例子中,`strchr()` 函数返回了一个指向字符 `'e'` 的指针,然后将该指针与字符串的起始地址相减,得到了字符 `'e'` 在字符串中的索引位置。请注意,在 C 语言中,字符数组是以 null 结尾的,因此不需要指定字符数组的长度。
相关问题
C语言查找字符数组中的字符
要在C语言中查找字符数组中的字符,可以使用字符串库中的函数或者自己编写循环遍历数组的代码实现。
使用字符串库函数:
1. 使用 strchr 函数,该函数返回字符串中第一次出现指定字符的位置,如果未找到该字符,则返回 NULL。
```c
char str[] = "hello world";
char c = 'o';
char *pos = strchr(str, c);
if (pos != NULL) {
printf("Found %c at position %ld\n", c, pos - str);
} else {
printf("Character not found\n");
}
```
2. 使用 strstr 函数,该函数返回字符串中第一次出现指定子字符串的位置,如果未找到该子字符串,则返回 NULL。
```c
char str[] = "hello world";
char sub[] = "world";
char *pos = strstr(str, sub);
if (pos != NULL) {
printf("Found '%s' at position %ld\n", sub, pos - str);
} else {
printf("Substring not found\n");
}
```
自己编写代码:
```c
char str[] = "hello world";
char c = 'o';
int pos = -1;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == c) {
pos = i;
break;
}
}
if (pos != -1) {
printf("Found %c at position %d\n", c, pos);
} else {
printf("Character not found\n");
}
```
C语言 去掉字符串数组中的字符串
要去掉一个字符串数组中的字符串,可以通过以下步骤实现:
1. 找到要删除的字符串在数组中的位置。
2. 将该位置后面的所有字符串都向前移动一个位置。
3. 将数组的长度减1。
以下是一个示例代码,演示如何从字符串数组中删除一个字符串:
```c
#include <stdio.h>
#include <string.h>
int main() {
char strArr[5][20] = {"apple", "banana", "orange", "pear", "peach"};
int len = 5;
// 要删除的字符串
char* strToRemove = "orange";
// 找到要删除的字符串在数组中的位置
int posToRemove = -1;
for (int i = 0; i < len; i++) {
if (strcmp(strArr[i], strToRemove) == 0) {
posToRemove = i;
break;
}
}
if (posToRemove != -1) {
// 将该位置后面的所有字符串都向前移动一个位置
for (int i = posToRemove; i < len - 1; i++) {
strcpy(strArr[i], strArr[i+1]);
}
// 将数组的长度减1
len--;
// 输出删除后的数组
for (int i = 0; i < len; i++) {
printf("%s\n", strArr[i]);
}
} else {
printf("String not found\n");
}
return 0;
}
```
在上面的示例代码中,我们首先定义了一个包含5个字符串的字符串数组,并且指定了数组的长度为5。然后我们要删除的字符串是"orange"。我们使用for循环查找要删除的字符串在数组中的位置,如果找到了该字符串,则将该位置后面的所有字符串都向前移动一个位置,并将数组的长度减1。最后,我们输出删除后的字符串数组。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)