Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность - C (СИ)
Формулировка задачи:
Переведите пожалуйста с Pasсal/Basic на C.
Задание:
Известно, что в исходной строке есть хотя бы один символ, отличный от пробела. Требуется преобразовать строку следующим образом. Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность, а также заменить каждую внутреннюю группу пробелов одним пробелом. Если указанных групп нет в данной последовательности, то оставить последовательность без изменения.
Program z4; Uses CRT; Var S:string; Begin Clrscr; readln(S); while S[1]=' ' do delete(S,1,1); while S[length(S)]=' ' do delete(S,length(S),1); while pos(' ',S)<>0 do delete(S,pos(' ',S),1); writeln(s); readkey; End.
CLS DIM s AS STRING, I AS INTEGER INPUT "", s s = LTRIM$(RTRIM$(s)) I = INSTR(s, " ") DO WHILE I > 0 s = RTRIM$(LEFT$(s, I)) + " " + LTRIM$(MID$(s, I)) I = INSTR(s, " ") LOOP PRINT s;
Решение задачи: «Удалить группы пробелов, которыми начинается и которыми заканчивается последовательность»
textual
Листинг программы
#include <stdio.h> #include <malloc.h> #include <string.h> void main() { char *delims = " "; char *s, *p; printf("%s","String:"); s = malloc(256); gets(s); p = strtok( s, delims ); while( p != NULL ) { printf("%s ", p ); p = strtok( NULL, delims ); } }
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: delims, s, p.
- Переменная delims инициализируется строкой
- Переменная s инициализируется динамически выделенной памятью на 256 символов.
- Пользователю предлагается ввести строку.
- Далее, в цикле while, происходит обход всех подстрок в исходной строке, разделенных пробелами.
- Каждая подстрока выводится на экран с помощью функции printf.
- В конце цикла, p=NULL, что означает конец подстрок.
- В конце программы, free(s); освобождает память, выделенную под строку s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д