Программирование. #define n 100 константа N, которая содержит максимальную длинну строки
Скачать 14.49 Kb.
|
#include #include #include #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;// } |