c语言利用指针求字符串1在字符串2中的位置
时间: 2023-12-27 11:01:59 浏览: 50
在 C 语言中,可以利用指针和字符串库函数来实现查找字符串1在字符串2中的位置。其中,字符串库函数 `strstr()` 可以在字符串2中查找字符串1的出现位置,并返回一个指向该位置的指针。如果找不到,则返回空指针。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "world, hello!";
char *pos = strstr(str2, str1);
if (pos != NULL) {
printf("字符串1在字符串2中的位置为:%ld\n", pos - str2);
} else {
printf("字符串1未在字符串2中出现!\n");
}
return 0;
}
```
在上面的代码中,`strstr()` 函数返回的指针减去字符串2的首地址,即可得到字符串1在字符串2中的位置。需要注意的是,如果找到的位置在字符串2的开头,则返回值为0。
相关问题
c语言利用指针和函数求字符串1在字符串2中的位置
可以利用指针和函数来实现查找字符串1在字符串2中的位置。可以编写一个函数,接收两个字符串指针作为参数,并返回字符串1在字符串2中的位置。如果字符串1未在字符串2中出现,则返回-1。
示例代码如下:
```c
#include <stdio.h>
int str_find(char *str1, char *str2) {
int pos = -1;
char *p = str2;
while ((p = strchr(p, *str1)) != NULL) {
if (strncmp(p, str1, strlen(str1)) == 0) {
pos = p - str2;
break;
}
p++;
}
return pos;
}
int main() {
char str1[] = "hello";
char str2[] = "world, hello!";
int pos = str_find(str1, str2);
if (pos != -1) {
printf("字符串1在字符串2中的位置为:%d\n", pos);
} else {
printf("字符串1未在字符串2中出现!\n");
}
return 0;
}
```
在上面的代码中,`str_find()` 函数利用 `strchr()` 函数查找字符串2中字符为字符串1首字符的位置,然后用 `strncmp()` 函数比较该位置后面的字符是否与字符串1相同。如果相同,则返回该位置在字符串2中的偏移量,即字符串1在字符串2中的位置。如果找不到,则返回-1。
c语言用指针在字符串中插入空格
可以通过指针操作来在字符串中插入空格。具体实现方法如下:
1. 定义一个指针变量,指向字符串的首地址;
2. 循环遍历字符串中的每个字符,判断是否为需要插入空格的位置;
3. 如果是需要插入空格的位置,就在该位置插入空格,并将指针向后移动一位;
4. 如果不是需要插入空格的位置,就将指针向后移动一位。
以下是代码示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
char *p = str; // 定义指针变量,指向字符串的首地址
for(int i = 0; i < strlen(str); i++)
{
if(i % 2 == 1) // 判断是否需要插入空格的位置
{
printf(" ");
}
printf("%c", *(p + i)); // 输出当前字符
}
return 0;
}
```
以上代码中,假设我们需要在字符串的奇数位置插入空格。因此,我们通过 `%` 运算符来判断当前字符是否为奇数位置,并在该位置插入空格。同时,使用指针变量 `p` 来遍历字符串中的每个字符。