所以我的类项目需要我从一个文件中找到一个关键字列表:
Master's,Bachelor's,Professor
需要我在另一个文件中的简历中找到它:
John Smith
1234 Residence Road
johnsmith@gmail.com
Degree level: Bachelor's degree
Major: Applied mathematics
Work Experience:
Professor at local university for multiple math classes, mainly calculus
Worked at a tech company studying the analytics of their online store
现在我将关键字存储在一个char spacing[10][15]
数组中(没有逗号(并且我将简历保存为CCD_ 2。两者都有效,因为它们都打印出来了,但当试图找到关键字时,我总是得到0(int KWcount
是关键字出现次数的计数器(。这是将简历放入缓冲区的代码,也是我查找单词的尝试。
//Resume
FILE* fp2;
fp2 = fopen("resume.txt", "r");
if (fp == NULL) {
printf("nFile not found.n");
return 0;
}
//File Reading
fseek(fp2, 0L, SEEK_END);
numbytes = ftell(fp2);
fseek(fp2, 0L, SEEK_SET);
buffer = (char*)calloc(numbytes, sizeof(char));
if (buffer == NULL)
return 1;
fread(buffer, sizeof(char), numbytes, fp2);
fclose(fp2);
printf("Before process: %i", KWcount);
//Search for keyword
for (i=0; i < 10; i++) {
if (strcmp(buffer, spacing[i]) == 0) {
KWcount++;
}
}
printf("nnAfter process:%in", KWcount);
fclose(fp2);
}
Before process:0
After process:0
我真的不知道问题出在哪里,我的教授也没有任何帮助,所以有人有什么建议或方法来解决这个问题吗?
strcmp(buffer, spacing[i])
只有当两个参数指向完全相等的字符串时,strcmp才会返回0。你需要做的是逐字逐句地搜索buffer
,然后将它们与你期望找到的单词进行比较。您可能会发现函数strtok
可以将简历缓冲区拆分为多个单词。
我还建议使用strncmp
,因为它允许您在比较中限制最大字符数。毕竟,你的目标是只比较简历中的一个单词,而不是整个字符串。