C语言用指针实现对给定字符串查找给定的子串并输出第一个子串所在的位置
时间: 2023-06-17 14:03:52 浏览: 84
以下是用指针实现的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], substr[100];
int pos = 0;
printf("请输入一个字符串:");
gets(str);
printf("请输入一个子串:");
gets(substr);
char *p = strstr(str, substr); // 使用字符串库函数strstr查找子串
if (p != NULL)
{
pos = p - str; // 计算子串在字符串中的位置
printf("第一个子串所在的位置为:%d\n", pos);
}
else
{
printf("未找到子串!\n");
}
return 0;
}
```
首先通过`gets()`函数获取输入的字符串和子串,并使用`strstr()`函数在字符串中查找子串。如果找到了子串,则将子串在字符串中的位置计算出来,输出位置值;否则输出未找到子串的提示信息。
相关问题
C语言用指针实现对给定字符串查找给定的子串并输出第一个子串所在的位置。
以下是使用指针实现的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int find_substring(char *str, char *substr) {
int len1 = strlen(str);
int len2 = strlen(substr);
int i, j;
for (i = 0; i <= len1 - len2; i++) {
for (j = 0; j < len2; j++) {
if (*(str+i+j) != *(substr+j)) {
break;
}
}
if (j == len2) {
return i;
}
}
return -1;
}
int main() {
char str[100];
char substr[100];
int pos;
printf("Enter a string: ");
scanf("%s", str);
printf("Enter a substring to find: ");
scanf("%s", substr);
pos = find_substring(str, substr);
if (pos == -1) {
printf("Substring not found in the given string.\n");
} else {
printf("Substring found at position %d in the given string.\n", pos);
}
return 0;
}
```
这段代码中,`find_substring` 函数接受两个指向字符数组的指针,分别表示要查找的字符串和子串。函数使用两个循环来查找子串在字符串中的位置,最终返回子串在字符串中第一次出现的位置,如果没有找到则返回 -1。
在 `main` 函数中,我们通过 `scanf` 函数获取要查找的字符串和子串,然后调用 `find_substring` 函数来查找子串在字符串中的位置,最后输出结果。
用c语言用指针实现对给定字符串查找给定的子串并输出第一个子串所在的位置
可以使用指针来实现字符串查找,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char *str, char *subStr) {
int len1 = strlen(str);
int len2 = strlen(subStr);
if (len1 < len2) {
return -1;
}
for (int i = 0; i <= len1 - len2; i++) {
int j = 0;
while (j < len2 && *(str + i + j) == *(subStr + j)) {
j++;
}
if (j == len2) {
return i;
}
}
return -1;
}
int main() {
char str[100] = "hello world";
char subStr[10] = "world";
int pos = findSubstring(str, subStr);
if (pos != -1) {
printf("The substring '%s' is found at position: %d\n", subStr, pos);
} else {
printf("The substring '%s' is not found in '%s'\n", subStr, str);
}
return 0;
}
```
在 `findSubstring` 函数中,通过指针访问字符串中的每个字符,使用 `while` 循环在子串和原始字符串中逐个比较字符。如果找到了子串,函数将返回子串在原始字符串中的位置;否则,返回 `-1`。在 `main` 函数中,我们将 `str` 和 `subStr` 作为参数传递给 `findSubstring` 函数,并根据函数返回的结果输出相应的消息。