C Программа для подсчета ключевых слов из текстового файла ключевых слов в отдельном файле и отображения их - PullRequest
0 голосов
/ 22 февраля 2019

Так что это школьное задание.Мы должны написать AC-программу, которая читает ключевые слова из одного файла и подсчитывает, сколько раз они показывают в отдельном файле.В этом случае другой файл является поддельным резюме.Я думал, что у меня есть это, но теперь я ударил кирпичную стену и застрял.Помощь будет принята с благодарностью!Спасибо!

    /*Programmer: John S. Bolen*/
/*Date: 2/20/19*/
/*This program will read the keyword file, and count the number of times the keywords are found in the fake resume file and display it for the user*/


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define PAUSE system("pause")
#define CLS system("cls")
#define FLUSH flush()
#define ROW 50
#define COL 21



void flush() {
    while (getchar() != '\n');
}

//prototype
void checkResume(char list[ROW][COL], int foundCount[ROW], int wordCount);
void displayResults(char list[ROW][COL], int foundCount[ROW], int wordCount);
int getWords(char list[ROW][COL]);


main() {
    char keyWords[ROW][COL] = { 0 };
    int foundCount[ROW] = { 0 };
    int wordCount;

    wordCount = getWords(keyWords);
    checkResume(keyWords, foundCount, wordCount);
    displayResults(keyWords, foundCount, wordCount);
    PAUSE;
} // end main

void checkResume(char list[ROW][COL], int foundCount[ROW], int wordCount) {
    FILE *fptr;
    char fileName[50];
    char read[1024];
    char readPart[21];
    int i, j, k;

    // get filename
    printf("Enter file name for resume: ");
    scanf("%s", fileName);

    for (i = 0; i < wordCount; i++) {
        // open file
        fptr = fopen(fileName, "r");
        if (fptr == NULL) {
            fptr = fopen("fakeResume.txt", "r"); 
            if (fptr == NULL) {
                printf("Error Opening File!");
                exit(-1);
            } // end if
        } // end if

        // read a line of text
        while (fgets(read, 1024, fptr) != NULL) {
            // TO UPPERCASE
            for (j = 0; j < (int)strlen(read); j++) {
                read[j] = toupper(read[j]);
            }
             //FOR TESTING ONLY: printf("Resume word %s\n", read); PAUSE;
            for (j = 0; read[j] != NULL; j++) {
                for (k = 0; k < 21; k++) // empty the tester
                    readPart[k] = 0;
                for (k = 0; k < (int)strlen(list[i]); k++) {
                    readPart[k] = read[j + k]; // fill the tester with the next part of the line...match letters of word

                }
                if (strcmp(readPart, list[i]) == 0) // do the comparison
                    foundCount[i]++;
            } // end for
        } // end while
        fclose(fptr); // file needs to be reopened for each word being checked
    } // end for i
} // end checkResume

void displayResults(char list[ROW][COL], int foundCount[ROW], int wordCount) {
    int i, j, total = 0;
    CLS;
    // find the total
    for (i = 0; i < ROW; i++)
        total += foundCount[i];
    // top line
    printf("\n\t\t%c", 201);
    for (i = 0; i < 37; i++)
        printf("%c", 205);
    printf("%c\n", 187);

    // keyword lines
    for (i = 0; i < wordCount; i++) {
        printf("\t\t%c %2i.) %s:", 186, i + 1, list[i]);
        for (j = 0; j < 20 - (int)strlen(list[i]); j++)
            printf(" ");
        printf("%3i times %c\n", foundCount[i], 186);
    } // end for

    // middle line
    printf("\t\t%c", 199);
    for (i = 0; i < 37; i++)
        printf("%c", 196);
    printf("%c\n", 182);

    // total line
    printf("\t\t%c Total Keywords Found:    %4i", 186, total);
    for (i = 0; i < 7; i++)
        printf(" ");
    printf("%c\n", 186);

    // bottom line
    printf("\t\t%c", 200);
    for (i = 0; i < 37; i++)
        printf("%c", 205);
    printf("%c\n\t\t", 188);

} // end displayResults

int getWords(char list[ROW][COL]) {
    int result = 0;
    FILE *fptr;
    char fileName[50];
    char string[1024] = { 0 };
    int i, j, k = 0;

    // get filename
    printf("Enter file name for keyword list: ");
    scanf("%s", fileName);
    // open file
    fptr = fopen(fileName, "r");
    if (fptr == NULL) {
        fptr = fopen("keywords.txt", "r"); 
        if (fptr == NULL) {
            printf("Error Opening File!");
            exit(-1);
        } // end if
    } // end if

    // get string---READ IN FROM THE INPUT FILE and store in one ARRAY
    fscanf(fptr, "%s", string); // this reads in everything

    // to UPPERCASE
    for (i = 0; i < (int)strlen(string); i++)
        string[i] = toupper(string[i]);

    // split the string
    for (i = 0; i < ROW && string[k] != '\0'; i++) {
        for (j = 0; string[k] != ','; j++) {
            if (string[k] != ',')       // keep putting letters in the  
                list[i][j] = string[k]; // row until you hit a comma
            k++;
        } // end for
        k++;
    } // end for

    // find word count
    for (i = 0; i < ROW; i++)
        if (list[i][0] != 0)
            result++;

    fclose(fptr);
    return result;
} // end getWords

Это ключевые слова из моего файла keyword.txt:

Java, CSS, HTML, XHTML, MySQL, колледж, университет, дизайн, разработка,Безопасность, Навыки, Инструменты, C, Программирование, Linux, Сценарии, Сеть, Windows, NT

, и вот фальшивое резюме из моего fakeResume.txt:

DawnДжонсон Sometown, OH 43085 Дом: 555-555-5555 |dj@somedomain.com |Найти профиль @twitterhandle |LinkedIn |Portfolio Link

Веб-разработчик

Младший веб-разработчик, способный создать веб-присутствие с нуля - от концепции, навигации, макета и программирования до UX и SEO.Умение писать хорошо продуманный, тестируемый и эффективный код с использованием современных лучших практик в веб-разработке.Быстрый ученик, труженик и командный игрок, который владеет множеством языков сценариев и мультимедийных веб-инструментов.Technical Toolbox

Веб-инструменты: JavaScript, jQuery, CSS, PHP, HTML, XHTML, XML, AngularJS, Bootstrap, Java, .Net, ASP.NET, Python, MySQL, GitHub, Apache Flex, JavaFX, REST, SOAP, cPanel, Google Analytics, WordPress Adobe Creative Cloud: Photoshop, Lightroom, Illustrator, InDesign, Experience Design, Premiere Pro, After Effects, Анимация, Dreamweaver, Предохранитель, Adobe Muse, Acrobat Pro DC

Образование ABCУНИВЕРСИТЕТ - Sometown, OH BS, Информационные технологии, Концентрация в разработке веб-сайтов, степень в процессе

Курсы: Веб и мультимедиа Разработка цифрового и интерактивного дизайна Графический дизайн и дизайн GUI Поисковая оптимизация (SEO) 3D-анимация и AgileМетодологии Управление веб-контентом Форматы сжатия интернет-технологий Аудио / видео Редактирование системы Безопасность Опыт веб-разработки

ABC CHARITY, Sometown Chapter - Sometown, OH Web Developer, 2015 до настоящего времени (лето)

Volunteered asвеб-разработчик недавно открывшегося приюта для животныхer.

Совместно разработал динамический, безопасный веб-сайт с нуля.Запущен визуально привлекательный, удобный для пользователя Webscape с интерактивными функциями для оптимизации трафика, просмотров страниц, «липкости» сайта и пользовательского опыта (UX).Использовал лучшие практики SEO для повышения присутствия организации в сети;достиг топ 10 рейтинга Google по нескольким высоко конкурентным ключевым словам.Созданы онлайн-опросы, конкурсы и формы пожертвований, которые увеличили финансирование и прозрачность организации.Помогло получить $ 38K в доходах электронной коммерции.Разработанное инновационное веб-приложение «Adopt-a-Pet», адаптированное для мобильных устройств.В результате награжден премией «Волонтер года».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...