Вставка пробелов в начало строки файла - 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д