Все слова, которые начинаются с большой буквы, вывести большими буквами - 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); }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
word
типаchar
иin_file
типаFILE*
. - Вводится файл
file.txt
для чтения. - Переменная
c
инициализируется значениемword
. - В цикле, пока файл не закончится, происходит следующее:
- Проверяется, является ли первая буква слова строчной. Если да, то цикл продолжается.
- Переменная
c
обновляется значениемword
. - В цикле, пока текущий символ является буквой, выводится его в верхнем регистре.
- Выводится символ новой строки.
- Файл закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д