У меня есть эта строкаУдалить лишние пробелы из строки в C
"go for goa"
и выход должен быть
"go for goa"
Я хочу, чтобы удалить лишние пробелы. Это означает, что два или более последовательных пробела должны быть заменены одним пробелом. Я хочу сделать это, используя алгоритм на месте.
Ниже приведен код, я пытался, но он не работает:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Function to remove spaces in an string array */
char *removeSpaces(char *str) {
int ip_ind = 1;
/* In place removal of duplicate spaces*/
while(*(str + ip_ind)) {
if ((*(str + ip_ind) == *(str + ip_ind - 1)) && (*(str + ip_ind)==' ')) {
*(str_ip_ind-1)= *(str + ip_ind);
}
ip_ind++;
}
/* After above step add end of string*/
*(str + ip_ind) = '\0';
return str;
}
/* Driver program to test removeSpaces */
int main() {
char str[] = "go for go";
printf("%s", removeSpaces(str));
getchar();
return 0;
}
Разве это невозможно решить, не используя дополнительный указатель ptr? – krrishna
@krrishna Нет, это не так, потому что, указывая на текущую позицию, вам нужно 'ip_ind'., Для прохождения до конца вам нужно по крайней мере одну переменную. В этом случае это 'ptr' –