Так что это школьное задание.Мы должны написать 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», адаптированное для мобильных устройств.В результате награжден премией «Волонтер года».