gpt4 book ai didi

c - 将字符串中所有 s1 替换为 s2 的程序

转载 作者:行者123 更新时间:2023-11-30 21:05:38 25 4
gpt4 key购买 nike

我发现这个程序将字符串中的所有 s1 替换为 s2,但我不明白该序列
int i = strstr(s, s1) - s ?

enter code here
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *my_replace(char *s, char *s1, char *s2)
{

char *aux = (char *) malloc((sizeof(s) - sizeof(s1)) + sizeof(s2) + 1);
int i = strstr(s, s1) - s, j = strlen(s1);
strncpy(aux, s, i);
strcat(aux, s2);
strncat(aux, (s + i + j), (strlen(s) - i - j));
return aux;
}


int main()
{
char *s, *s1, *s2;
s = (char*)malloc(10);
s1 = (char*)malloc(10);
s2 = (char*)malloc(10);
char *aux;
scanf("%s%s%s", s, s1, s2);
aux = my_replace(s, s1, s2);
printf("%s\n", aux);
return 0;
}

最佳答案

.. and i don't understant the sequence: int i = strstr(s, s1) - s

嗯,它为您提供了在 s 中找到 s1 的偏移量。

示例:

char* s = "abcdef";
char* s1 = "cd";
printf("%d\n", strstr(s, s1) - s);

将给出结果2

这是因为 strstr 返回一个指向所定位子字符串开头的指针,然后通过减去字符串的开头(指针算术),可以获得它们之间的偏移量。

你可以这样看:

 abcdr
^ ^
| |
| strstr(s, s1)
|
s

关于c - 将字符串中所有 s1 替换为 s2 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552288/

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