Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #define SIZEBUF 100//константа, определяющая масимальные размеры строк, которыми мы оперируем в программе
- #include <locale.h>
- void var_str(char *input, char *output){//функция по варианту
- int i=0;
- int inword=0;
- int wordsize=0;
- char firstletter;
- int found=0; //нашли одинаковое начало и конец слова?
- while(input[i++]!='\0');//просто идём до конца строки
- int strsize=i;
- input[i-1]=' ';//в конце строки ставим пробел, чтобы ограничить последнее слово
- for(i=0; i<SIZEBUF; i++)
- output[i]='\0';
- i=0;//т.к. счётчик понадобится снова, зануляем его
- while(i<strsize){
- if(inword==1&&isspace(input[i])){//вышли из слова
- //printf("%c %c \n", firstletter, input[i-1]);
- if(firstletter==input[i-1]){
- found=1;
- break;
- }
- wordsize=0;
- inword=0;
- firstletter='\0';
- }
- if(inword==1&&!isspace(input[i])){//находимся в слова
- wordsize++;
- }
- if(inword==0&&!isspace(input[i])){//зашли в слово
- inword=1;
- wordsize=1;
- firstletter=input[i];
- }
- i++;
- }
- if(found){
- i=0;
- output[0]='!';
- while(i<strsize-1){
- output[i+1]=input[i];
- i++;
- }
- output[strsize+1]='\n';
- }
- else{//не нашли одинакового начала и конца в словах строки, возвращаем исходную строку в качестве обработанной
- i=0;
- while(i<strsize-1){
- output[i]=input[i];
- i++;
- }
- output[strsize]='\n';
- }
- }
- int main(){
- setlocale(LC_ALL, "");
- char input[SIZEBUF];//массив, в который считывается строки входного файла
- char in_file[SIZEBUF];
- char out_file[SIZEBUF];
- printf("Введите исходного файла: ");
- scanf("%s", in_file);//получаем название входного файла
- printf("Введите получаемого файла: ");
- scanf("%s", out_file);//получаем название выходного файла
- //printf("Введённая строка: %s\n", &input);
- FILE *pInputFile = fopen(in_file, "r"); //открываем входной файл на чтение (r-read)
- FILE *pOutputFile = fopen(out_file, "w");//открываем выходной файл на запись (w-write)
- int counter=0; //считаем, какая по порядку строка (меняем каждую третью, остальные переписываем без изменений)
- while(fgets(input, SIZEBUF, pInputFile) != NULL)//читаем строки, пока не наткнёмся на конец файла
- {
- char output[SIZEBUF];//создаём массив, который передадим в функцию по варианту
- var_str(input, output);//как требовалось по заданию, передаём в функцию два указателя
- //...input - указатель на начало входной строки; output-на начало получаемой строки по варианту;
- fprintf(pOutputFile, "%s", output);//записываем преобразованную строку в выходной файл
- }
- return EXIT_SUCCESS;//по завершению программы выдаём значение, символизирующее успешность выполнения программы
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement