Word mincing / программа смешивания - PullRequest
0 голосов
/ 15 ноября 2018

Это то, как мой вывод в настоящее время выглядит (что не так, как я хочу) и как должен выглядеть правильный вывод -

This is what my output currently looks like (which is not how I want it) and what the correct output should look like, Я хочу, чтобы моя программа, которую я сейчас выполняю, принимала входные данныеиз 2 файлов .txt, а затем поместите их в 1 выходной файл .txt, но выходные данные должны выглядеть примерно так:

Например, если содержимое двух входных файлов было следующим: «Сейчас самое время». «Длябыстрая коричневая лиса. »Тогда моя строка вывода будет такой:« Теперь быстрое время, коричневая лиса ».

Программа также должна использовать заглавные буквы первой буквы каждого слова из первого файла и последнюю буквукаждое слово из второго файла, пока я не исчерпал одну строку, затем передает все оставшиеся слова из более длинной строки в мой выходной файл без изменений.В конце каждого набора строк заканчиваются точкой и записывают строку в выходной файл, как показано выше

Мой текущий код в c выглядит следующим образом:

/* 
*   Copyright (C) 2018 Canton Robinson
*
*   This program is free software: you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation, either version 3 of the License, or
*   (at your option) any later version.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h> 
#include <stdlib.h> 
int main( int argc, char *argv[] ) 
{ 
 FILE *fp1 , *fp2, *fp3;
 int ch;

  if (argc !=4) {
        fprintf(stderr, "Usage: mincer File1 File2 destFile\n");
        exit(EXIT_FAILURE);
    }

 if ((fp1 = fopen(argv[1], "rb")) ==NULL) {
            fprintf(stderr, "Can't open %s\n", argv[1]);
            exit(EXIT_FAILURE);
        }

         if ((fp2 = fopen(argv[2], "rb")) ==NULL) {
            fprintf(stderr, "Can't open %s\n", argv[2]);
            exit(EXIT_FAILURE);
        }

  if ((fp3 = fopen(argv[3], "wb")) ==NULL) {
            fprintf(stderr, "Can't open %s\n", argv[3]);
            fclose(fp1);
            fclose(fp2);
            exit(EXIT_FAILURE);
        }

   // Copy contents of first file to file3.txt 
   while ((ch = fgetc(fp1)) != EOF) 
      fputc(ch, fp3); 

   // Copy contents of second file to file3.txt 
   while ((ch = fgetc(fp2)) != EOF) 
      fputc(ch, fp3); 

   printf("Merged %s and %s into %s", argv[1], argv[2], argv[3]); 

   fclose(fp1); 
   fclose(fp2); 
   fclose(fp3); 
   return 0; 
} 

1 Ответ

0 голосов
/ 15 ноября 2018

Этот цикл может делать то, что вы хотите.Извините, не могу проверить код.

while(isspace(ch1=fgetc(fp1)));
while(isspace(ch2=fgetc(fp2)));

while(ch1!=EOF || ch2!=EOF) {
    if(ch1!=EOF) {
        fputc(toupper(ch1), fp3);
        while((ch1=fgetc(fp1))!=EOF && !isspace(ch1))
            fputc(ch1, fp3);
        fputc(' ', fp3);
        while(isspace(ch1))
            ch1=fgetc(fp1);
    }
    if(ch2!=EOF) {
        for(lch2=ch2; (ch2=fgetc(fp2))!=EOF && !isspace(ch2); lch2=ch2)
            fputc(lch2, fp3);
        fputc(toupper(lch2), fp3);
        fputc(' ', fp3);
        while(isspace(ch2))
            ch2=fgetc(fp2);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...