Вставка пробелов в начало строки файла - C (СИ)
Формулировка задачи:
Доброго времени суток!Помогите разобраться. В файле 123.txt подсчитывается кол-во пробелов в строке, в другой файл записывается эта же строка только в начало добавляются эти пробелы(Пример: 123.txt:Привет как дела? out.txt: Привет как дела?. В out 2 пробела сначала)
Там только косяк в том, что обрабатывается только первая строка.
Пишу в CodeBlocks/
Помогите решить, заранее спасибо.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <string.h> #include <malloc.h> main() {FILE *in, *out; char *str,*pr; int i,S,j,k; in=fopen("123.txt","r"); if(in==NULL) //Если файла 123 нет в папке с прогой, то программа завершается {printf("Error\n"); exit(-1);} else { out=fopen("out.txt","w"); str=(char*)malloc(sizeof(char)*128) ; fgets(str,128,in); S=strlen(str); j=0; for(i=0;i<S;i++) { if(str[i]==' ') j++; } pr=(char*)calloc((S+j+1),sizeof(cha r)); for(i=0;i<j;i++) pr[i]=' '; for(i=0;i<S;i++) {pr[j+i]=str[i];} fputs(pr,out); free(pr); free(str); fclose(out); fclose(in); printf("Done\n");} }
Решение задачи: «Вставка пробелов в начало строки файла»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *in, *out; char *str,*pr=NULL; int i,S,j; in=fopen("f1.txt","r"); out=fopen("f2.txt","w"); if(in==NULL||out==NULL) { printf("Error\n"); exit(-1); } else { str=(char*)malloc(sizeof(char)*128) ; while( fgets(str,128,in)!=NULL) { S=strlen(str); j=0; for(i=0;i<S;i++) { if(str[i]==' ') j++; } pr=(char*)calloc((S+j+1),sizeof(char)); for(i=0;i<j;i++)pr[i]=' '; for(i=0;i<S;i++)pr[j+i]=str[i]; fputs(pr,out); } free(pr);free(str); fclose(out);fclose(in); printf("Done\n"); } return 0; }
Объяснение кода листинга программы
В данном коде решается задача вставки пробелов в начало строки файла. Вот список действий, которые выполняются в коде:
- Подключаются необходимые библиотеки (stdio.h, stdlib.h, string.h).
- Объявляются и инициализируются переменные:
- in - указатель на файл для чтения;
- out - указатель на файл для записи;
- str - указатель на строку, в которой читается информация из файла;
- pr - указатель на строку, в которой будет храниться результат;
- i, S, j - целочисленные переменные для работы со строками.
- Открываются файлы f1.txt и f2.txt для чтения и записи соответственно.
- Проверяется, открылись ли файлы корректно. Если возникла ошибка, выводится сообщение об ошибке и программа завершается.
- Если файлы открылись корректно, выделяется память под строку str и pr.
- В цикле while считывается информация из файла f1.txt в строку str до тех пор, пока не будет достигнут конец строки или не будет прочитана ошибка.
- Внутри цикла вычисляется длина строки S.
- В цикле for удаляются все пробелы в начале строки.
- В цикле for пробелы заменяются на символы пробелов.
- В цикле for записывается отформатированная строка в файл f2.txt.
- Освобождается память, выделенная под строку pr.
- Освобождается память, выделенная под строку str.
- Закрываются файлы f1.txt и f2.txt.
- Выводится сообщение об успешном выполнении задачи.
- Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д