Все слова, которые начинаются с большой буквы, вывести большими буквами - C (СИ)

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

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

Здравствуйте! Помогите пожалуйста! Нужно в текстовом файле все слова, которые начинаются с большой буквы, вывести большими буквами. Вот, что есть
#include <stdio.h>
#include <stdlib.h>                 
#include <string.h>                
#include <ctype.h>
#include<time.h>    
#include "Prog.c"
 
void Time_Stamp(FILE *f)
{time_t tmp;
tmp=time(NULL);
fprintf(f,"***%s***\n",ctime(&tmp));
}
 
int Letter(char Ch)
{int Count;
char Alphabet[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (Count=0;Count<strlen(Alphabet);Count++)
{if (Ch==Alphabet[Count])
return(1);}
return(0);
}
 
main(int argc, char *argv[])
{int n,Count,Ch,Word_is;
char slovo;
char buffer[30];

FILE *fin, *fout, *flog; 

if (argc<2)
{ puts("Недостаточно аргументов");
  printf("Используйте например %s text.txt \n", argv[0]);
  puts("Press Enter."); getchar(); exit(0);
  }
  
sprintf(buffer,"%s.log",argv[0]);
 if ((flog=fopen(buffer,"a"))==NULL)
   { puts("Протокол не открылся. Работа невозможна\n");
     puts("Press Enter."); getchar(); exit(0);
   }
   
   Time_Stamp(flog);
 fputs("Протокол успешно открыт \n",flog);
 fputs("Программа приступает к работе \n",flog);
 puts("Протокол успешно открыт \n");
 puts("Программа приступает к работе \n");
 
 if ((fin=fopen(argv[1],"r"))==NULL)
 {
 
    printf("Ошибка открытия файла %s \n",argv[1]);
    Time_Stamp(flog);
    fprintf(flog,"Ошибка открытия файла %s \n",argv[1]);
    puts("Press Enter."); getchar();exit(0);
    
  }
  
  if ((fout=fopen("text","w"))==NULL)
  {
       printf("Ошибка открытия файла text.txt");
       Time_Stamp(flog);
       fprintf(flog,"Ошибка открытия файла text.txt");
       puts("Press Enter."); getchar(); exit(0);
       
   }
    
    Time_Stamp(flog);
    fprintf(flog,"Все файлы открыты успешно \n");
    printf("Все файлы открыты успешно \n");
    
   //program 
    while(1)
    {Ch=fgetc(fin);
    if(Ch==EOF) break;
    if(!Letter(Ch)&&!Word_is)
    {fputc(Ch,fout);
    continue;}
    if(Letter(Ch)&&!Word_is)
    {buffer[Count]=Ch;
    Count++;
    Word_is=1;
    continue; //slovo est'
    }
    if (Letter(Ch)&&Word_is)
    {buffer[Count]=Ch;
    Count++;
    continue;
    }
    if(!Letter(Ch)&&Word_is) //konec slova
    {buffer[Count]='\0';
    Count=0;
    Word_is=0;
    if (isupper(buffer[Count]))                       // 
    while(1){                                             //думаю ошибка где-то здесь
    buffer[Count]=toupper(buffer[Count]);     //
    fprintf(fout,"%s",buffer);}                     //
    else fprintf(fout,"%s",buffer);
    fputc(Ch,fout);
    }
    }
    
    //printf(" %s",buffer); 
    Time_Stamp(flog);
    fprintf(flog,"Результат");   
    
    fclose(fin);
    fclose(fout);
    
    Time_Stamp(flog);
    fprintf(flog,"Работа завершилась успешно");
    
    fclose(flog);
    puts("Press Enter."); getchar(); exit(0);
    
    fclose(fin);
 }

Решение задачи: «Все слова, которые начинаются с большой буквы, вывести большими буквами»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
int main()
{
    char word[80];
    FILE* in_file;
    char *c;
 
    in_file=fopen("file.txt", "r");
    while(fscanf(in_file, "%79s", word) != EOF)
    {
        if(islower(word[0])) continue;
        c = word;
        while(isalpha(*c)) putc(toupper(*c++), stdout);
        putc('\n', stdout);
    }
    fclose(in_file);
}

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

В этом коде:

  1. Объявлены две переменные: word типа char и in_file типа FILE*.
  2. Вводится файл file.txt для чтения.
  3. Переменная c инициализируется значением word.
  4. В цикле, пока файл не закончится, происходит следующее:
    • Проверяется, является ли первая буква слова строчной. Если да, то цикл продолжается.
    • Переменная c обновляется значением word.
    • В цикле, пока текущий символ является буквой, выводится его в верхнем регистре.
    • Выводится символ новой строки.
  5. Файл закрывается.

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


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

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

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