Главная страница

Программирование. #define n 100 константа N, которая содержит максимальную длинну строки


Скачать 14.49 Kb.
Название#define n 100 константа N, которая содержит максимальную длинну строки
АнкорПрограммирование
Дата12.03.2023
Размер14.49 Kb.
Формат файлаdocx
Имя файлаinclude.docx
ТипДокументы
#982666

#include

#include

#include //заголовочный файл, доступный в средах разработки для Windows. Предназначен для организации текстового ввода-вывода. (помагает работать с русскими буквами)

#include //заголовочный файл стандартной библиотеки языка программирования С, который используется для задач, связанных с локализацией. (помагает работать с русскими буквами)

#include //специфичный заголовочный файл языка программирования С (помагает работать с русскими буквами)

#define N 100// константа N, которая содержит максимальную длинну строки

int check_file_name(char File_name[N]);

int main(int argc, char* argv[])

{

char* locale = setlocale(LC_ALL, "");//функции позволяет устанавливать различные параметры в зависимости от географического положения пользователя (помагает работать с русскими буквами)

SetConsoleCP(1251);//вызов функции, которая устанавливает кодовую страницу ввода, используемую консолью (помагает работать с русскими буквами)

SetConsoleOutputCP(1251);//вызов функции, которая устанавливает кодовую страницу вывода данных, используемую консолью (помагает работать с русскими буквами)

char File_name[N] = "";

int i,j;

int key;

int sym,prev=-1;

int pr,k;

int probl;

//char zn_pr[12] = "'()/?!;:.,";

FILE *answ,*vvod;

//zn_pr[10] = '"';

//zn_pr[11] = '/0';

/*

for (i = 0; i < argc; i++) {

printf("%s\n", argv[i]);

}

*/

if (argc == 1) {//не введён адрес текстового документа

printf("Введите имя файла (максимальное количество символов - %d):\n",N);

scanf_s("%s",&File_name,N);

//printf("Вы ввели: %s\n",File_name);

key = check_file_name(File_name);

//printf("%d", key);

}

else if (argc == 2) {

strcpy_s(File_name,N, argv[1]);

key = check_file_name(File_name);

}

else {

printf("Ошибка. Введено несколько аргументов\n");

system("pause");

return 0;

}

if (key) {

fopen_s(&answ, "Answ.txt", "w+");

fopen_s(&vvod, File_name, "r");

if ((!answ) || (!vvod)) {

printf("Ошибка. Файл не открылся\n");

system("pause");

return 0;

}

pr = 0;

k = 0;

probl = 0;

//sym1 = fgetc(vvod);

//если вначале много пробелов

while ((sym = fgetc(vvod)) != EOF) {

probl = 0;

/*

if ((sym == '-')|| (prev == '-')) {

probl = 1;

}*/

if ((prev == ' ') && (sym == ' ')) {//+

prev = sym;

if (probl) {

printf("1");

}

continue;

}

else if (((prev == '\n')|| (prev == -1)) && (sym == ' ')) {//+

prev = sym;

if (probl) {

printf("2");

}

continue;

}

else if ((strchr(",.;:!?", prev)) && (sym != ' ')) {//+

fputc(' ', answ);

if (probl) {

printf("3");

}

}

else if ((!strchr(" ,.;:!?-", prev)) && (sym == ' ')) {//+()

pr = 1;

//printf("1=%c\n", prev);

prev = sym;

if (probl) {

printf("4");

}

continue;

}

else if (sym == '-') {

if (probl) {

printf("5");

}

if (prev == ' ') {

pr = 0;

k = 1;

prev = sym;

continue;

}

else if (prev == '-') {//+

pr = 0;

k = 0;

fputc(' ', answ);

fputc('-', answ);

fputc('-', answ);

fputc(' ', answ);

prev = sym;

continue;

}

else {

pr = 0;

k = 1;

prev = sym;

continue;

}

}

else if ((prev == '-')) {

if (probl) {

printf("6");

}

if (sym == ' ') {

if (k) {

fputc('-', answ);

prev = sym;

pr = 0;

k = 0;

continue;

}

}

else {

if (k) {

fputc('-', answ);

pr = 0;

k = 0;

}

}

}

else if ((prev == ' ') && (sym != ' ')) {//+

//printf("2=%c pr=%d\n", sym,pr);

if (probl) {

printf("7");

}

if (strchr(",.;:!?", sym)) {

pr=0;

}

if (pr) {

pr = 0;

fputc(' ', answ);

}

}

fputc(sym, answ);

//fputc(sym, answ);

//printf("c=%c\n", sym);

prev = sym;

}

printf("Программа закончила работу корректно\n");

fclose(answ);

fclose(vvod);

}

else {

printf("Ошибка. Неккоректное имя файла\n");

}

system("pause");

return 0;

}

int check_file_name(char File_name[N]) {

int n = strlen(File_name);

int i;

//char key = 1;

char txt[5];// массив под конец строки

//printf("n=%d\n",n);

for (i = 1; i < 5; i++) {

txt[i-1] = File_name[n - i];//берём последние 4 символа строки

}

txt[4] = '\0';//

//printf("txt=%s", txt);

if (strcmp(txt,"txt.") == 0) {//проверяем корректность введения имя файла (последние 4 символа .txt)

return 1;//

}

return 0;//

}


написать администратору сайта