Все слова, которые начинаются с большой буквы, вывести большими буквами - 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
. - В цикле, пока текущий символ является буквой, выводится его в верхнем регистре.
- Выводится символ новой строки.
- Файл закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д