Перенести в конец каждой строки все входящие в неё цифры - C (СИ)
Формулировка задачи:
Тёмный лес для меня, те кто дал задание сказали, что оно интересное, помогите пожалуйста решить её, пока интересно только то, как её решать?
Используя очередь решить следующую задачу.Содержимое текстового файла f, разделённое на строки, переписать в текстовый файл g, перенося при этом в конец каждой строки все входящие в неё цифры (с сохранением исходного порядка как среди цифр, так и среди остальных символов строки.)
Решение задачи: «Перенести в конец каждой строки все входящие в неё цифры»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> struct list { int data; struct list *next; }; struct list *ptr, *ptr2, *tmpptr; int main() { FILE *in, *out; int c, n=0; in=fopen("f.txt","r"); out=fopen("g.txt","w"); if(in != NULL) { while(1) { c=fgetc(in); if ((c!='\n')&&(c!=EOF)) { if (!((c>=48)&&(c<=57))) { fputc(c,out); } else { /*ptr=new list;*/ ptr = (struct list*)malloc(sizeof(struct list)); ptr -> data=c; if (n==0) { ptr2=ptr; } if (n!=0) { tmpptr -> next = ptr; } tmpptr=ptr; n++; } } else { ptr=ptr2; for (int i=0; i<n; i++) { fputc(ptr -> data,out); ptr=ptr->next; } fputc(10,out); n=0; } if (c==EOF) { break; } } } fclose(in); return 0; }
Объяснение кода листинга программы
- Структура данных, используемая в программе, - это связанный список (linked list).
- Переменные
ptr
,ptr2
иtmpptr
используются для работы со связанным списком. - Входной файл
f.txt
считывается посимвольно с помощью функцииfgetc()
. - Если символ не является переносом строки (
\n
) и не является концом файла (EOF), то он проверяется. - Если символ не является числом от 0 до 9, то он записывается в выходной файл
g.txt
. - Если символ является числом от 0 до 9, то он добавляется в связанный список.
- Если это первый элемент в списке, то он становится
ptr2
. - Если это не первый элемент, то он добавляется в конец списка, используя
tmpptr
. - После того, как все символы в строке были обработаны, они выводятся в выходной файл
g.txt
. - Переменная
n
используется для отслеживания количества элементов в списке. - Переменная
c
используется для хранения текущего считываемого символа. - Переменная
in
используется для открытия входного файлаf.txt
для чтения, а переменнаяout
используется для открытия выходного файлаg.txt
для записи. - Если входной файл не может быть открыт, программа выводит сообщение об ошибке и завершается.
- Если достигается конец файла (EOF), то программа завершается.
- Все открытые файлы закрываются с помощью функции
fclose()
. - Программа возвращает 0, что означает успешное выполнение.
- Вывод программы: в выходной файл
g.txt
добавляются все цифры из каждой строки входного файлаf.txt
, перемещая их в конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д