Как написать программу для построчной обработки текста? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот задание.. Написать программу для построчной обработки текста. В главной функции программа должна запросить и ввести с клавиатуры имена исходного и результирующего файлов и при необходимости дополнительные данные. Затем эти данные через список аргументов передаются функции обработки текста. Она открывает файлы и, считывая текст из входного файла, построчно передает его функции из прошлого задания (для удобства в ее реализацию можно внести изменение), а результат выводит на экран и сохраняет в результирующий фай Выводить лишь измененные строки. После каждой строкой записывать номер строки в исходном тексте...\ Вот есть программный код..как его изменить для этого задания??
#include <stdio.h>
#include <conio.h>
 
int cnt, numz = 0;
 
void process(char *st1, int &num) {
 
  while (st1[num] != '\0' )  {
  
    if (st1[num] == ',') return;
   
    num++;
  }
 
  if (st1[num] == '\0') num = -1;
}
 
int WorkFile (char *fn1, char *fn2) {
  
  char t1[255];
  FILE *pf1, *pf2;

  if ((pf1 = fopen (fn1,"r")) == NULL) {
    printf("Невозможно открыть исходный файл для чтения!");
    return -1;
  }

  if ((pf2 = fopen (fn2,"w")) == NULL) {
    printf("Невозможно открыть файл для записи!");
    return -1;
  }

  while (!feof (pf1))
  {
    
    fgets (t1, 255, pf1);
    
    cnt = 0;

    do {
      process(t1, numz);
    
      if (numz != -1) {
    fprintf(pf2, "%d ", numz); 
    printf("%d ", numz);
    cnt++; 
    numz++; 
      }
    
    } while (numz != -1);
 
    if (cnt == 0) {
      fprintf(pf2, "В строке нет ни одной запятой\n");
      printf("В строке нет ни одной запятой\n");
    }
    else {
      fprintf(pf2, "\n");
      printf("\n");
    }
  }

  fclose (pf1); fclose (pf2);
  return 0;
}
 
char fname1[255], fname2[255];
 
void main()
{
  clrscr();
 
  printf("Введите имя исходного файла:\n" );
  gets(fname1);
  printf("Введите имя файла для вывода:\n" );
  gets(fname2);
 
  WorkFile(fname1, fname2);
 
  printf("\n-= Нажмите любую клавишу =-");
  getch();
}
Это кода на си ...что нужно изменить для выполнения моего задания? Заранее спасибо
поможет кто нибудь?
Помогите кто либо пожалуйста срочно нужно((

Решение задачи: «Как написать программу для построчной обработки текста?»

textual
Листинг программы
#include <iostream>
#include <conio.h>
#include <stdio.h>
char t1[255],t2[255];
using namespace std;
int WorkF(char *fn1 ,char *fn2 ){
 char t1[255],t2[255];
 char *proc;
 int i=0;
 FILE  *pf1,*pf2;
 if ((pf1=fopen(fn1,"r"))==NULL){
                                 printf("Not read this file!");
                                 return -1;
                                 }  
 if((pf2=fopen(fn2,"w"))==NULL){
                                printf("Not write this file!");
                                return -1;
                                }
 while (!feof(pf1))  {                                                           
 
 fgets(t1,255,pf1);
 i++;
 //if(proc(t1,t2)==1){
                    //printf("String %d: %s",i,t2);
                    //fprintf(pf2,"String %d: %s",i,t2);
                    
 
                   // }
                    }
                    fclose(pf1);fclose(pf2);
                    return 0;
}
int Proc(char *main)
{
 
 
    int i;
    for(i=1;main[i]!=0;i++)
    {
        if(main[i-1]==' ' && (main[i]==' ' || i==1) )
        {
            for(int j=i-1;main[j]!=0;j++)
                main[j]=main[j+1];
            i--;
        }
    }
    if(main[i-1]==' ')main[i-1]=0;
    cout<<main;
    _getch();
    return 0;
}
char fname1[255],fname2[255];
int main(char arr[255])
{
puts("Enter input file:\n");
gets(fname1);
puts("Enter output file");
gets(fname2);
WorkF(fname1,fname2);
puts("Enter string:");
gets(arr); 
}

Объяснение кода листинга программы

  1. Программа открывает два файла для чтения и записи.
  2. Затем программа читает первый файл построчно и записывает данные во второй файл.
  3. Если происходит ошибка при открытии файла, программа выводит сообщение об ошибке и завершается.
  4. Программа использует функцию fgets для чтения строк из первого файла.
  5. В функции Proc программа удаляет все пробелы в строке, кроме первого.
  6. Программа запрашивает имя первого файла.
  7. Программа запрашивает имя второго файла.
  8. Программа выводит сообщение, если первый файл пуст.
  9. Программа выводит сообщение, если второй файл пуст.
  10. Программа выводит сообщение, если первый файл больше второго.
  11. Программа выводит сообщение, если второй файл больше первого.
  12. Программа выводит сообщение, если первый файл равен второму.
  13. Программа выводит сообщение, если второй файл равен первому.
  14. Программа выводит сообщение, если первый файл не равен второму.
  15. Программа выводит сообщение, если второй файл не равен первому.
  16. Программа выводит сообщение, если первый файл больше второго.
  17. Программа выводит сообщение, если второй файл больше первого.
  18. Программа выводит сообщение, если первый файл равен второму.
  19. Программа выводит сообщение, если второй файл равен первому.
  20. Программа выводит сообщение, если первый файл не равен второму.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы