使用c语言,设s、t 为两个字符串,两个字符串分为两行输出,判断t 是否为s 的子串。如果是,输出子串所在位置(第一个字符,字符串的起始位置从0开始),否则输出-1
时间: 2023-11-20 16:57:58 浏览: 139
可以使用C语言中的字符串函数strstr实现判断t是否为s的子串,如果是,返回子串在s中第一次出现的位置指针,否则返回NULL。
代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[100], t[100];
printf("请输入字符串s:");
scanf("%s", s);
printf("请输入字符串t:");
scanf("%s", t);
char *p = strstr(s, t);
if (p != NULL) {
int pos = p - s; // 计算子串在s中的位置
printf("%d\n", pos);
} else {
printf("-1\n");
}
return 0;
}
```
需要注意的是,如果使用gets函数输入字符串s和t,需要自己处理字符串末尾的换行符,否则会影响判断结果。可以使用fgets函数代替gets函数,fgets函数会读取输入的换行符。
相关问题
设s、t 为两个字符串,两个字符串分为两行输出,判断t 是否为s 的子串。如果是,输出子串所在位置(第一个字符,字符串的起始位置从0开始),否则输出-1c语言
#include <stdio.h>
#include <string.h>
int main() {
char s[100], t[100];
scanf("%s %s", s, t);
int slen = strlen(s), tlen = strlen(t);
int i, j;
for (i = 0; i <= slen - tlen; i++) {
for (j = 0; j < tlen; j++) {
if (s[i + j] != t[j]) {
break;
}
}
if (j == tlen) {
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
c语言设s、t为两个字符串,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出-1
可以使用strstr函数判断t是否为s的子串,如果是,该函数会返回t在s中第一次出现的位置指针;否则返回NULL。具体代码如下:
```c
char* s = "hello world";
char* t = "world";
char* p = strstr(s, t);
if (p != NULL) {
// t是s的子串,输出位置
printf("%d\n", p - s);
} else {
// t不是s的子串,输出-1
printf("-1\n");
}
```
上面这段代码会输出`6`,表示t在s中第一次出现的位置是s中的第7个字符。
阅读全文