gpt4 book ai didi

c - Search a String in a string(字符串由用户输入)

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:30 24 4
gpt4 key购买 nike

我需要编写一个程序,通过键盘输入两个字符串,然后搜索第一个字符串以查找第二个字符串,然后给出它首次出现的位置。

#include <stdio.h>
#include <string.h>

int main() {

char in1[10000];
char in2[10000];


fgets(in1, sizeof(in1), stdin);
fgets(in2, sizeof(in2), stdin);
printf("%d", strstr(in1, in2) - in1+1);

return 0;
}

我做了3个测试

in1=11121
in2=121
result=3 correct

in1=11121121
in2=121
result=6 wrong

in1=11121211
in2=121
result=-2348863 obviously wrong

in1=111211211211
in2=121
result=-2348879

我不知道为什么它会在序列出现两次时给出第二次出现,而在出现三次时给出一个很大的负数。

我做错了什么?

最佳答案

在这种情况下,最好使用 scanf,因为它会截断输入中的换行符,而 fgets 不会。此外,您应该使用 %ld,因为您正在使用指针进行操作(或转换为 int)。

以下代码适用于您的所有示例:

#include <stdio.h>
#include <string.h>

int main()
{
char in1[10000];
char in2[10000];
int i;

scanf("%s", in1);
scanf("%s", in2);

char* result = strstr(in1, in2);
if (result != NULL) printf("%ld\n", strstr(in1, in2) - in1 + 1);
else printf("No match\n");

return 0;
}

关于c - Search a String in a string(字符串由用户输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com