C语言在一个字符串中查找第一个子串,并输出第一个子串的下标。 如:This is a test message! 为字符串,子串为:is ,则输出为2。(不能用系统的字符串函数实现!)
时间: 2024-04-30 13:24:39 浏览: 36
可以使用循环来遍历字符串,逐一比较每个字符是否与子串匹配。如果匹配成功,则输出当前位置的下标。
以下是使用C语言实现的代码示例:
```
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], substr[20];
int i, j, len, sublen, found = 0;
printf("Enter a string: ");
gets(str);
printf("Enter a substring: ");
gets(substr);
len = strlen(str);
sublen = strlen(substr);
for(i = 0; i <= len - sublen; i++)
{
for(j = 0; j < sublen; j++)
{
if(str[i+j] != substr[j])
break;
}
if(j == sublen)
{
printf("Substring found at index %d\n", i);
found = 1;
break;
}
}
if(!found)
printf("Substring not found\n");
return 0;
}
```
注意,上述代码中使用了 `gets()` 函数来读取用户输入的字符串和子串。但是,`gets()` 函数存在安全问题,可能会导致缓冲区溢出等问题。更好的做法是使用 `fgets()` 函数,并去掉末尾的换行符。
阅读全文