本关任务:输入两个字符串str1和str2,查找str2在str1里首次出现的位置。给出c语言代码
时间: 2024-04-30 21:24:16 浏览: 147
请参考以下代码:
```
#include <stdio.h>
#include <string.h>
int main(){
char str1[100], str2[100];
printf("请输入字符串str1:");
scanf("%s", str1);
printf("请输入字符串str2:");
scanf("%s", str2);
char *ptr = strstr(str1, str2);
if(ptr){
printf("字符串str2在字符串str1中首次出现的位置是:%d\n", ptr - str1);
}
else{
printf("字符串str2未在字符串str1中出现!\n");
}
return 0;
}
```
输入两个字符串str1和str2,程序会查找str2在str1中首次出现的位置,并输出结果。如果str2未在str1中出现,则输出提示信息。
相关问题
C语言:输入两个字符串str1和str2,输出str2在str1中的所有位置,没有则输出no
以下是一个基于C语言的实现,可以实现输入两个字符串str1和str2,输出str2在str1中的所有位置,没有则输出no:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入字符串1:");
scanf("%s", str1);
printf("请输入字符串2:");
scanf("%s", str2);
int len1 = strlen(str1), len2 = strlen(str2);
int i, j, k, flag;
for (i = 0; i <= len1 - len2; i++) {
flag = 1;
for (j = 0, k = i; j < len2; j++, k++) {
if (str2[j] != str1[k]) {
flag = 0;
break;
}
}
if (flag) {
printf("在位置%d处发现字符串2\n", i);
}
}
if (!flag) {
printf("no\n");
}
return 0;
}
```
该程序首先使用`scanf`函数分别读入两个字符串`str1`和`str2`,然后使用`strlen`函数求出两个字符串的长度。接着,使用两个循环嵌套来枚举`str2`在`str1`中出现的位置,具体地,外层循环控制`str2`在`str1`中的起始位置,内层循环则用于比较`str1`和`str2`中对应位置的字符是否相同。如果在某个位置发现`str2`,则输出该位置。最后,如果没有发现`str2`,则输出`no`。
用c语言来编程:输入两个字符串 str1,str2,判断如果字符串str1大于str2 ,则互换两个字符串的值,然后将互换的两个字符串连接起来后,再输出字符串。
好的,让我来回答您的问题。这是一个可以用C语言编写的程序,用来比较并互换两个字符串的值,然后连接起来并输出。可以像这样实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void swap(char* str1, char* str2);
void concatenate(char* str1, char* str2, char* result);
int main() {
char str1[MAX_LEN], str2[MAX_LEN], result[MAX_LEN];
printf("请输入第一个字符串:");
fgets(str1, MAX_LEN, stdin);
printf("请输入第二个字符串:");
fgets(str2, MAX_LEN, stdin);
if (strcmp(str1, str2) > 0) {
swap(str1, str2);
}
concatenate(str1, str2, result);
printf("连接后的字符串为:%s\n", result);
return 0;
}
void swap(char* str1, char* str2) {
char temp[MAX_LEN];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
void concatenate(char* str1, char* str2, char* result) {
strcpy(result, str1);
strcat(result, str2);
}
```
程序中,我们先定义了三个长度为 `MAX_LEN` 的字符数组 `str1`、`str2` 和 `result`,用于存放输入的两个字符串和连接后的结果。然后通过 `fgets` 函数从标准输入读取两个字符串。
接下来使用 `strcmp` 函数比较两个字符串的大小,如果 `str1` 大于 `str2`,则调用 `swap` 函数互换两个字符串的值。在 `swap` 函数中,我们定义了一个临时数组 `temp`,通过 `strcpy` 和 `strcmp` 函数实现字符串的互换。
最后调用 `concatenate` 函数将两个字符串连接起来,并将连接后的结果存放在 `result` 数组中。在 `concatenate` 函数中,我们使用 `strcpy` 和 `strcat` 函数将 `str1` 和 `str2` 连接起来。
最终通过 `printf` 函数将连接后的字符串输出。
阅读全文