gpt4 book ai didi

c - 在txt文件中搜索关键字并用C记录它

转载 作者:行者123 更新时间:2023-11-30 14:41:35 26 4
gpt4 key购买 nike

我正在尝试使用 C 来搜索包含 C 代码的文件。它的目的是搜索整个文件,查找某些关键字或字符(例如查找 Int、Long、For 循环等)并通过递增计数器来记录它们,以及计算所有代码的总行数。然后它的目的是提供每个关键字的总数,以便可以根据关键字在文件中出现的频率来计算百分比。

但是,我无法让代码识别关键字。我应该如何让它读取代码的总行数以及查找关键字?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define _CRT_SECURE_NO_WARNINGS

/* Count and compute:

number of total lines
number and percentage of blank lines
number and percentage of comments (start with // or /*)
number and percentages of ints, longs, floats, doubles, char
number and percentages of if's
number and percentage of else's
number and percentage of for's
number and percentage of switch
number and percentage of semicolons
number and percentage of structs
number and percentage of arrays (contains [ or ], divide count by 2)
number of blocks (contains { or }, divide count by 2)
*/


int main(void)
{
int lineCount = 0; // Line counter (result)
int forCount = 0; // For counter
int intCount = 0;
char c;

FILE *ptr_file;
char buf[1000];

ptr_file = fopen("file.txt", "r");
if (!ptr_file)
return 1;

while (fgets(buf, 1000, ptr_file) != NULL) {


for (c = getc(ptr_file); c != EOF; c = getc(ptr_file)) {
if (c == '\n') // Increment count if this character is newline
lineCount = lineCount + 1;
}
}
fclose(ptr_file);
//End of first scan
ptr_file = fopen("file.txt", "r");
if (!ptr_file)
return 1;

while (fgets(buf, 1000, ptr_file) != NULL) {
for (c = getc(ptr_file); c != EOF; c = getc(ptr_file)) {
if (c == 'for') // Increment count if this character is for
forCount = forCount + 1;
}
}
fclose(ptr_file);
//End of second scan
ptr_file = fopen("file.txt", "r");
if (!ptr_file)
return 1;

while (fgets(buf, 1000, ptr_file) != NULL) {
for (c = getc(ptr_file); c != EOF; c = getc(ptr_file)) {
if (c == 'int') // Increment count if this character is for
intCount = intCount + 1;
}
}

fclose(ptr_file);
printf("\nThe file has %d lines\n", lineCount);
printf("\nThe file has %d fors\n", forCount);
printf("\nThe file has %d ints\n", intCount);
}

最佳答案

您需要使用sscanf并逐行解析它。

对于找到的每个项目,保持计数应该没有问题。

但正如您所讨论的(在其他论坛上寻求帮助),您需要的功能就是这个。

关于c - 在txt文件中搜索关键字并用C记录它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54858209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com