我发现该程序可以将字符串中的所有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;
}
答案 0 :(得分:0)
..并且我不理解序列:
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