D
David RF
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *s;
printf("======================================\n");
s = calloc(101, sizeof(char));
if (s != NULL) {
strcpy(s, "A Begoña le gusta el vino de Borgoña!!");
printf("%s\n", s);
while (*s) {
do memmove(s, s + 1, strlen(s) + 1); while ((*s & 0xc0) == 0x80);
printf("%s\n", s);
}
if (s) free(s);
}
printf("======================================\n");
return 0;
}
I don't see any mistake, but valgrind tells me:
david@debian:~$ valgrind --tool=memcheck --leak-check=yes -v ./demo
======================================
--3746-- REDIR: 0x4e9d680 (calloc) redirected to 0x4c20310 (calloc)
--3746-- REDIR: 0x4ea2eb0 (memcpy) redirected to 0x4c231d0 (memcpy)
--3746-- REDIR: 0x4ea2570 (mempcpy) redirected to 0x4c23d30 (mempcpy)
A Begoña le gusta el vino de Borgoña!!
--3746-- REDIR: 0x4ea22b0 (memmove) redirected to 0x4c23c70 (memmove)
Begoña le gusta el vino de Borgoña!!
Begoña le gusta el vino de Borgoña!!
egoña le gusta el vino de Borgoña!!
goña le gusta el vino de Borgoña!!
oña le gusta el vino de Borgoña!!
ña le gusta el vino de Borgoña!!
a le gusta el vino de Borgoña!!
le gusta el vino de Borgoña!!
le gusta el vino de Borgoña!!
e gusta el vino de Borgoña!!
gusta el vino de Borgoña!!
gusta el vino de Borgoña!!
usta el vino de Borgoña!!
sta el vino de Borgoña!!
ta el vino de Borgoña!!
a el vino de Borgoña!!
el vino de Borgoña!!
el vino de Borgoña!!
l vino de Borgoña!!
vino de Borgoña!!
vino de Borgoña!!
ino de Borgoña!!
no de Borgoña!!
o de Borgoña!!
de Borgoña!!
de Borgoña!!
e Borgoña!!
Borgoña!!
Borgoña!!
orgoña!!
rgoña!!
goña!!
oña!!
ña!!
a!!
!!
!
--3746-- REDIR: 0x4e9b9e0 (free) redirected to 0x4c21240 (free)
======================================
==3746==
==3746== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from
1)
What does it mean REDIR? excuse this little OT but I don't find any
info in google about this point.
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *s;
printf("======================================\n");
s = calloc(101, sizeof(char));
if (s != NULL) {
strcpy(s, "A Begoña le gusta el vino de Borgoña!!");
printf("%s\n", s);
while (*s) {
do memmove(s, s + 1, strlen(s) + 1); while ((*s & 0xc0) == 0x80);
printf("%s\n", s);
}
if (s) free(s);
}
printf("======================================\n");
return 0;
}
I don't see any mistake, but valgrind tells me:
david@debian:~$ valgrind --tool=memcheck --leak-check=yes -v ./demo
======================================
--3746-- REDIR: 0x4e9d680 (calloc) redirected to 0x4c20310 (calloc)
--3746-- REDIR: 0x4ea2eb0 (memcpy) redirected to 0x4c231d0 (memcpy)
--3746-- REDIR: 0x4ea2570 (mempcpy) redirected to 0x4c23d30 (mempcpy)
A Begoña le gusta el vino de Borgoña!!
--3746-- REDIR: 0x4ea22b0 (memmove) redirected to 0x4c23c70 (memmove)
Begoña le gusta el vino de Borgoña!!
Begoña le gusta el vino de Borgoña!!
egoña le gusta el vino de Borgoña!!
goña le gusta el vino de Borgoña!!
oña le gusta el vino de Borgoña!!
ña le gusta el vino de Borgoña!!
a le gusta el vino de Borgoña!!
le gusta el vino de Borgoña!!
le gusta el vino de Borgoña!!
e gusta el vino de Borgoña!!
gusta el vino de Borgoña!!
gusta el vino de Borgoña!!
usta el vino de Borgoña!!
sta el vino de Borgoña!!
ta el vino de Borgoña!!
a el vino de Borgoña!!
el vino de Borgoña!!
el vino de Borgoña!!
l vino de Borgoña!!
vino de Borgoña!!
vino de Borgoña!!
ino de Borgoña!!
no de Borgoña!!
o de Borgoña!!
de Borgoña!!
de Borgoña!!
e Borgoña!!
Borgoña!!
Borgoña!!
orgoña!!
rgoña!!
goña!!
oña!!
ña!!
a!!
!!
!
--3746-- REDIR: 0x4e9b9e0 (free) redirected to 0x4c21240 (free)
======================================
==3746==
==3746== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from
1)
What does it mean REDIR? excuse this little OT but I don't find any
info in google about this point.