C程序可将关键字文本文件中的关键字统计到一个单独的文件中,并显示它们

时间:2019-02-22 04:51:43

标签: c

这是学校的作业。我们要编写一个c程序,该程序从一个文件中读取关键字,并计算它们在一个单独的文件中显示的次数。在这种情况下,另一个文件是伪造的简历。我以为自己有,但是现在我撞到了砖墙,被卡住了。帮助将不胜感激!谢谢!

    /*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 Johnson Johnson Sometown,OH 43085主页:555-555-5555 | dj@somedomain.com | BeFound个人资料@twitterhandle |领英|   投资组合链接

     

Web开发人员

     

能够从头开始建立Web形象的初级Web开发人员   -从概念,导航,布局和编程到UX和SEO。熟练使用以下语言编写经过精心设计,可测试和高效的代码   Web开发中的当前最佳实践。快速学习,勤奋的人   和精通多种脚本语言的团队合作者   和多媒体Web工具。技术工具箱

     

网络工具: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 Adob​​e Creative   云:Photoshop,Lightroom,Illustrator,InDesign,体验设计,   Premiere Pro,After Effects,动画,Dreamweaver,保险丝,Adobe Muse,   Acrobat Pro DC

     

教育ABC大学-俄亥俄州Sometown,理学士,信息技术,   专注于网站开发,正在进行中

     

课程:Web和多媒体开发数字和交互式设计   图形和GUI设计搜索引擎优化(SEO)3D动画和   敏捷方法论Web内容管理互联网技术   压缩格式音频/视频编辑系统安全性网站   开发经验

     

ABC CHARITY,Sometown分部-俄亥俄州,Sometown网络开发人员,2015至   礼物(夏天)

     

自愿作为新开放的动物收容所的Web开发人员。

     

从头开始共同开发一个动态,安全的网站。推出   具有交互功能的视觉吸引力,用户友好的Webscape   优化流量,页面浏览量,网站“粘性”和用户体验   (UX)。使用SEO最佳做法来提升组织的Web形象;   在几个竞争激烈的网站上获得Google排名前10位   关键字。创建在线调查,竞赛和捐赠表格,   提高了资金和组织的知名度。帮助推动$ 38K的收入   电子商务收入。设计创新的“收养宠物”网站   为移动设备定制的应用程序。荣获“   因此获得了“年度”奖。

0 个答案:

没有答案