首先我的代码打印了yksi itsekseen lol
,现在它打印了yksiitsekseenlol
,我正在尝试打印yksi itsekseen lol
。在第一个,有两个,第二个没有,我试图在单词之间只有一个空间。
我的代码:
#include <stdio.h>
#include <string.h>
void antikorso(char *dest, const char *src) {
const char *p = src;
int i;
for (i = 0; *p != ' '; i++, p++)
{
if (*p == 'x') {
dest[i++] = 'k';
dest[i] = 's';
}
else if (*p == 'z') {
dest[i++] = 't';
dest[i] = 's';
}
else
{
dest[i] = *p;
}
}
dest[i] = ' ';
char *original = dest;
char c[10] = "hello";
while (dest = strstr(dest, c)) {
memmove(dest, dest + strlen(c), 1 + strlen(dest + strlen(c)));
}
char *nat = original;
char b[20] = "asd";
while (dest = strstr(original, b)) {
memmove(dest, dest + strlen(b), 1 + strlen(dest + strlen(b)));
}
printf("n%s", nat);
char *vit = nat;
char d[10] = " ";
while (dest = strstr(nat, d)) {
memmove(dest, dest + strlen(d), 1 + strlen(dest + strlen(d)));
}
printf("n%s", vit);
return vit;
}
int main(void)
{
const char *lol = "hello yxi asd izexeen hello lol";
char asd[10000];
antikorso(asd, lol);
}
好吧,所以您几乎拥有它,我想,更改
memmove(dest, dest + strlen(c), 1 + strlen(dest + strlen(c)));
to
memmove(dest, dest + strlen(c) - 1, 1 + strlen(dest + strlen(c)));
我认为这会做到。该代码以前跳过了两个空间,因此,如果您将其退回一个位置,则应在副本中包含一个空间。
无论如何,应该可以将两个空间倒入一个空间。您应该测试如果您连续三个空间最终会发生什么。