Удалить лишние пробелы - C (СИ)
Формулировка задачи:
это небольшой кусочек задачи. В начале задается массив, который заполняется произвольным текстом. Предполагается, что может быть поставлено много лишних пробелов перед словами. Нужно удалить лишние пробелы.
Поправьте пожалуйста.
#include <stdio.h> #include <string.h> void udalenie (char *txt[10][50], int i, int t, int k) { int p; for (p=i;p<k;i++) *txt[t][p]=*txt[t][p+1]; } void main () { int i,j,k,n,t; char *txt[10][50]; printf ("\nVvedite kolichestvo strok\n"); scanf ("%d", &n); for (t=0;t<=n;t++) gets (*txt[t]); for (t=0;t<=n;t++) { k=strlen (*txt[t]); for (i=0;i<=k-1;i++) for j=i+1;j<=k;j++) if ((*txt[t][i]==' ') && (*txt[t][j]==' ')) { udalenie (txt,i,t,k); i--; } } for (t=0;t<=n;t++) printf ("%s/n", txt[t]); }
Решение задачи: «Удалить лишние пробелы»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <locale.h> #define size 80 void deleteSpace(char *line, int pos) { int len = strlen(line); while(pos < len) { line[pos] = line[pos+1]; pos++; } } void analyze (char *line) { int i = 0, len = strlen(line); while (i < len) { if(line[i] == ' ' && line[i+1] == ' ') { deleteSpace(line, i+1); len--; } else i++; } } int main() { setlocale(LC_ALL, ""); int i, n; printf ("Введите количество строк:\n"); scanf ("%d", &n); getchar(); /*убираем '\n' в потоке stdin*/ char **text = (char**) malloc(n * sizeof(char*)); for(i = 0; i<n; i++) text[i] = (char*) malloc (size); printf ("\nВведите текст:\n"); for (i = 0; i< n; i++) { fgets (text[i], size, stdin); text[i][strlen(text[i]) - 1] = '\0'; /*убираем '\n' в строке*/ analyze(text[i]); } printf ("\nТекст после обработки:\n"); for (i = 0; i< n; i++) puts (text[i]); for(i = 0; i<n; i++) free(text[i]); free(text); getchar(); return 0; }
Объяснение кода листинга программы
- В функции
deleteSpace
происходит удаление лишних пробелов в строке. Происходит это путем замены двух соседних пробелов на один. - Функция
analyze
анализирует строку, и если встречает два пробела подряд, то вызывает функциюdeleteSpace
для удаления лишнего пробела. - В функции
main
происходит ввод количества строк и их текста. - Далее, каждая строка вводится по отдельности, обрабатывается функцией
analyze
и выводится на экран. - В конце программы происходит освобождение выделенной памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д