#define _CRT_SECURE_NO_WARNINGS #include #include #include #include int fun4(); int fun5(); int main() { int choice; int lines; char prog[100]; SetConsoleOutputCP(1251); SetConsoleCP(1251); printf("Меню:\n"); printf("1:четене програмата от файл и запис на резултата във файл(потребителят трябва да въведе имената на двата файла, като файла с програмата трябва да завършва с '.С')\n\n"); printf("2:четене програмата от файл и извеждане на резултата на екрана(файлът въведен от потребителят трябва да завършва на '.С')\n\n"); printf("3:четене на програмата от клавиатура и извеждане във файл зададен от потребителят\n\n"); printf("4:четене на програмата от клавиатурата и извеждане на екрана\n\n"); printf("Напишете вашия избор:"); fflush(stdout); scanf("%d", &choice); switch (choice) { case 1: fun4(); printf("Резултатите са във файла"); break; case 2: fun5(); break; case 3: fun6(); printf("Резултатите са във файла"); break; case 4: fun7(); break; default: printf("ГРЕШКА!"); } system("pause"); return 0; } int fun4() { char line[300]; int emptyLine = 0; int logical = 0; char fpname[255], newfpname[255]; printf("Въведи името на файла за четене :\n"); scanf("%s", fpname); printf("Въведи името на файла за запис на резултата:\n"); scanf("%s", newfpname); FILE *fp = fopen(fpname, "r"); if (fp == NULL) { printf("ГРЕШКА: Файлът не може да се отвори!\n"); return -1; } else if (fpname[strlen(fpname) - 2] != '.'&& fpname[strlen(fpname) - 1] != 'c') { printf("ГРЕШКА: Файлът не е с правилното разширение!\n"); return -1; } { while (fgets(line, 300, fp)) { int i = 0; int len = strlen(line); emptyLine++; for (i = 0; i < len; i++) { if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ') { emptyLine--; break; } } if (strstr(line, "while") || strstr(line, "do") || strstr(line, "for")) { logical++; } } } fclose(fp); if (newfpname[strlen(newfpname) - 2] != '.'&& newfpname[strlen(newfpname) - 1] != 'c') { printf("ГРЕШКА: Файлът не е с правилното разширение!\n"); return -1; } FILE *newfp = fopen(newfpname, "w"); if (newfp) { fprintf(newfp, "Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical); } fclose(newfp); return 0; } int fun5() { char line[300]; int emptyLine = 0; int logical = 0; char fpname[255], newfpname[255]; printf("Въведи името на файла за четене :\n"); scanf("%s", fpname); FILE *fp = fopen(fpname, "r"); if (fp == NULL) { printf("ГРЕШКА: Файлът не може да се отвори!\n"); return -1; } else if (fpname[strlen(fpname) - 2] != '.'&& fpname[strlen(fpname) - 1] != 'c') { printf("ГРЕШКА: Файлът не е с правилното разширение!\n"); return -1; } else { while (fgets(line, 300, fp)) { int i = 0; int len = strlen(line); emptyLine++; for (i = 0; i < len; i++) { if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ') { emptyLine--; break; } } if (strstr(line, "while") || strstr(line, "do") || strstr(line, "for")) { logical++; } } } printf("Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical); return 0; } int fun6() { char line[300]; int emptyLine = 0; int logical = 0; char newfpname[255]; printf("Въведи името на файла за запис на резултата:\n"); fflush(stdout); scanf("%s", newfpname); printf("Напиши програмата:(за край на програмата натиснете CTR+Z)\n"); fflush(stdout); scanf("%s", &line); { while (fgets(line, 300, stdin)) { int i = 0; int len = strlen(line); emptyLine++; for (i = 0; i < len; i++) { if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ') { emptyLine--; break; } } if (strstr(line, "while") || strstr(line, "do") || strstr(line, "for")) { logical++; } } } FILE *newfp = fopen(newfpname, "w"); if (newfp) { fprintf(newfp, "Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical); } fclose(newfp); return 0; } int fun7() { char line[300]; int emptyLine = 0; int logical = 0; printf("Напиши програмата:(за край на програмата натиснете CTR+Z)\n"); fflush(stdout); scanf("%s", &line); { while (fgets(line, 300, stdin)) { int i = 0; int len = strlen(line); emptyLine++; for (i = 0; i < len; i++) { if (line[i] != '\n' && line[i] != '\t' && line[i] != ' ') { emptyLine--; break; } } if (strstr(line, "while") || strstr(line, "do") || strstr(line, "for")) { logical++; } } } printf("Празните редове са : %d, \n Операторите за цикъл са: %d", emptyLine, logical); if(line[strlen(line) - 1] == EOF) return 0; }