//查找子串 //查找子串 #include<string.h> #include<stdio.h> //如果t是s的子串,返回在s中起始下标,不是子串返回-1 int fun(char *s,char *t) { //********begin***********// //*******end************// } int main(void) { char str1[30],str2[10]; gets(str1); gets(str2); printf("%d", fun(str1,str2)); return 0; }补全该程序
时间: 2023-06-29 07:12:43 浏览: 346
可以使用C语言的字符串库函数strstr()来判断一个字符串是否是另一个字符串的子串。如果是,则返回在主串中的起始下标;如果不是,则返回NULL。
下面是完整的程序实现:
```
#include <stdio.h>
#include <string.h>
//如果t是s的子串,返回在s中起始下标,不是子串返回-1
int fun(char *s, char *t) {
char *p = strstr(s, t);
if (p) {
return p - s;
} else {
return -1;
}
}
int main(void) {
char str1[30], str2[10];
gets(str1);
gets(str2);
printf("%d", fun(str1, str2));
return 0;
}
```
函数fun()接受两个指向字符数组的指针,分别表示主串和子串。它首先调用strstr()函数判断子串是否是主串的子串,如果是,则计算出子串在主串中的起始下标并返回;如果不是,则返回-1。
在main()函数中,通过gets()函数分别读入主串和子串,并调用fun()函数进行判断。最后将结果输出。
相关问题
#include <stdio.h> #include <stdlib.h> #include <string.h>分别阐述他们在文档中记载程序的使用
`#include <stdio.h>`,`#include <stdlib.h>`,和`#include <string.h>`是在C语言中用于引入标准库函数和数据类型的预处理器指令。它们的作用如下:
1. `#include <stdio.h>`:包含了基本的输入/输出功能,如`printf()`(用于输出文本)和`scanf()`(用于读取用户输入),以及文件操作相关的函数。
2. `#include <stdlib.h>`:提供了与内存管理和系统资源有关的函数,如内存分配和释放函数`malloc()`和`free()`,以及一些数学函数,如随机数生成函数`rand()`。
3. `#include <string.h>`:这个头文件包含字符串处理函数,如`strlen()`(计算字符串长度)、`strcpy()`(复制字符串)、`strcmp()`(比较字符串)等。
相关问题--:
1. 在C语言中,如何使用`printf()`函数来输出数据?
2. `malloc()`函数用于什么目的?
3. 如何使用`string.h`中的`strstr()`函数查找子串?
查找子串,补充下面的程序 #include<stdio.h> #include<string.h> int fun(char *s,char*t) { // } int main() { char str1[30],str2[10]; gets(str1); gets(str2); printf("%d",fun(str1,str2)); return 0; }
可以使用字符串库函数strstr来查找子串,具体实现如下:
```c
#include<stdio.h>
#include<string.h>
int fun(char *s, char *t) {
char *p = strstr(s, t); // 在s中查找t
if (p == NULL) { // 如果找不到,返回-1
return -1;
} else { // 如果找到,返回t在s中的起始位置
return p - s;
}
}
int main() {
char str1[30], str2[10];
gets(str1);
gets(str2);
printf("%d", fun(str1, str2));
return 0;
}
```
注意,gets()函数存在安全性问题,建议使用fgets()函数代替。
阅读全文