werde mir den string ohne den geben letzte Zeichen, aber ich habe immer noch nicht herausgefunden, wie man ein Zeichen in der entfernt Mitte einer Saite.
alle Vorkommen eines bestimmten Zeichens: stackoverflow.com/questions/4161822/…
– Ciro Santilli OurBigBook.com
27. April 2016 um 14:27 Uhr
Stapler
memmove kann mit überlappenden Bereichen umgehen, ich würde so etwas versuchen (nicht getestet, vielleicht +-1-Problem)
Ziemlich effizient und einfach. strcpy Verwendet memmove bei den meisten Implementierungen.
DAS IST UNDEFINIERTES VERHALTEN. Wie Abschnitt 7.21.2.3 („The strcpy function”) von C99 erklärt: “Wenn zwischen Objekten kopiert wird, die sich überlappen, ist das Verhalten undefiniert.” Was using memmove “bei den meisten Implementierungen” – [citation needed].
– Maja
11. September 2019 um 19:27 Uhr
strcpy nutzt nicht immer memmoveverlassen Sie sich nicht darauf, tatsächlich tut es das fast nie.
– chqrlie
21. Mai um 21:23 Uhr
pevik
int chartoremove = 1;
strncpy(word2, word, chartoremove);
strncpy(((char*)word2)+chartoremove, ((char*)word)+chartoremove+1,
strlen(word)-1-chartoremove);
Hässlich wie die Hölle
DAS IST UNDEFINIERTES VERHALTEN. Wie Abschnitt 7.21.2.3 („The strcpy function”) von C99 erklärt: “Wenn zwischen Objekten kopiert wird, die sich überlappen, ist das Verhalten undefiniert.” Was using memmove “bei den meisten Implementierungen” – [citation needed].
– Maja
11. September 2019 um 19:27 Uhr
strcpy nutzt nicht immer memmoveverlassen Sie sich nicht darauf, tatsächlich tut es das fast nie.
– chqrlie
21. Mai um 21:23 Uhr
Dan der Mann
Im Folgenden wird das Problem etwas erweitert, indem alle Zeichen aus dem ersten Zeichenfolgenargument entfernt werden, die im zweiten Zeichenfolgenargument vorkommen.
/*
* delete one character from a string
*/
static void
_strdelchr( char *s, size_t i, size_t *a, size_t *b)
{
size_t j;
if( *a == *b)
*a = i - 1;
else
for( j = *b + 1; j < i; j++)
s[++(*a)] = s[j];
*b = i;
}
/*
* delete all occurrences of characters in search from s
* returns nr. of deleted characters
*/
size_t
strdelstr( char *s, const char *search)
{
size_t l = strlen(s);
size_t n = strlen(search);
size_t i;
size_t a = 0;
size_t b = 0;
for( i = 0; i < l; i++)
if( memchr( search, s[i], n))
_strdelchr( s, i, &a, &b);
_strdelchr( s, l, &a, &b);
s[++a] = "https://stackoverflow.com/questions/5457608/'\0'";
return l - a;
}
14127100cookie-checkWie entferne ich das Zeichen an einem bestimmten Index aus einer Zeichenfolge in C?yes
alle Vorkommen eines bestimmten Zeichens: stackoverflow.com/questions/4161822/…
– Ciro Santilli OurBigBook.com
27. April 2016 um 14:27 Uhr