Обработка символьных строк - C (СИ)
Формулировка задачи:
Сформировать и вывести на экран текстовый файл содержащий только последовательности символов, которые содержатся внутри операторных скобок "{" - "}". Перевести в этих строках символы в их числовое представление и подсчитать их сумму.го
Задали нам задание ничего не объяснив. Прошу помощи!
Решение задачи: «Обработка символьных строк»
textual
Листинг программы
#include <stdio.h> #define CB_MAX 256 char* str_to_int(char* s, int* num); char* offset_end(char* p, int* sum, int c, int* dg); void output_text(FILE* _out, FILE* _in, char x, char y); int main(void){ FILE* fp = fopen("file.txt", "r"); if(fp != NULL){ output_text(stdout, fp, '{', '}'); fclose(fp); } getchar(); return 0; } //вывод содержимого void output_text(FILE* _out, FILE* _in, char x, char y){ char s[CB_MAX], *p, *i; int sum, dg = 0, g = 0; while((p = fgets(s, CB_MAX, _in)) != NULL){ if(g){ i = offset_end(p, &sum, y, &dg); fprintf(_out, "%.*s", (int)(i - p), p); if(*i == y){ if(dg) fprintf(_out, " sum: %d", sum); fputc('\n', _out); p = i + 1; goto __next; } } else { __next: for(sum = g = 0; *p; ){ if(*p == x){ i = offset_end(++p, &sum, y, &dg); fprintf(_out, "%.*s", (int)(i - p), p); if(*i == y){ if(dg) fprintf(_out, " sum: %d", sum); fputc('\n', _out); sum = g = 0; p = i + 1; } else { g = 1; break; } } else ++p; } } } } //суммирование и выделение конца строки char* offset_end(char* p, int* sum, int c, int* dg){ int n, s = 0; *dg = 0; while(*p && (*p != c)){ if(*p >= '0' && *p <= '9'){ p = str_to_int(p, &n); s += n; *dg = 1; } else ++p; } *sum = s; return p; } //из строки в число char* str_to_int(char* s, int* num){ int n = 0; for(; *s >= '0' && *s <= '9'; ++s) n = n*10 + (*s - '0'); *num = n; return s; }
Объяснение кода листинга программы
- В данном коде используется язык программирования C.
- Задача программы - обработка символьных строк.
- Код содержит функции:
output_text
- выводит содержимое файла, обрабатывая строки с использованием символов '{' и '}'.offset_end
- находит конец строки и выделяет сумму чисел в строке.str_to_int
- преобразует строку в целое число.
- В функции
output_text
происходит обработка каждой строки из файла. Если символ '}' встречается в строке, то выводится сумма чисел, заключенных в скобки. - В функции
offset_end
происходит поиск конца строки и подсчет суммы чисел в строке. - В функции
str_to_int
происходит преобразование строки в целое число. - В основной функции
main
происходит открытие файлаfile.txt
для чтения и вызов функцииoutput_text
для вывода содержимого файла. - В конце программы происходит закрытие файла и считывание символа из стандартного ввода для определения конца работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д