Я пытаюсь использовать strtok для нормализации пробелов в строке после удаления подстроки. Иногда, когда я удаляю подстроку, между двумя словами будет 2 пробела, и я хочу уменьшить их до 1, например, удаление подстроки «подъем и» из строки «взлет и падение Рима» оставляет 2 пробела между и падение .
Это то, что у меня есть до сих пор, но у меня нет опыта работы с strtok:
char *strdel(char *string, const char *substring) {
int mainlen, sublen;
// finds the first occurrence of the substring
char *del_sub = strstr(string, substring);
char *wspc, *df;
while (del_sub != NULL) {
// finds length of string from beginning of substring
// found in main string
mainlen = strlen(del_sub);
// finds length of the substring
sublen = strlen(substring);
// removes the number of bytes needed after the
// first instance of the substring
memmove(del_sub, del_sub + sublen, strlen(del_sub));
wspc = strtok(string, " ");
while ((df = strtok(NULL, " ")) != NULL) {
strcat(string, df);
memset(df, 0, strlen(df));
}
// continues to search for another occurrence of the
// substring until it equals NULL
del_sub = strstr(string, substring);
}
return(string);
}
a
из(space)a(space)
, где ваш блок? Лучше показать доказательства попытки отладки вместо отладки моего кода и объяснить, что именно вы не понимаете. - person HostileFork says dont trust SE   schedule 28.10.2014