C计数器的实现

时间:2019-03-15 22:50:01

标签: c

我编写了一个c程序来计算单词“ printf”在特定文件(此处为“ document.c”)中出现的时间。 “ document.c”具有多行代码。我要做的是从while循环开始,迭代文件的每一行,然后使用功能strstr读取for循环中每一行的字符。

它不会用我当前的代码打印任何内容。而且,我认为还有其他一些小问题,因为在较旧的版本中它可以打印但不能正确打印,它打印的数量比文档中“ printf”的实际数量大得多。

我也是c的新手,谢谢!

int counter() {
    FILE * filePointer;
    filePointer = fopen("document.c", "r");
    int counter = 0;
    char singleLine[200];

    while(!feof(filePointer)){
        fgets(singleLine, 200, filePointer);
        for (int i = 0; i < strlen(singleLine); i++){
            if(strstr(singleLine, "printf")){
                counter++;
            }
        }
    }
    fclose(filePointer);
    printf("%d",counter);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您要遍历输入行中的每个字符,然后询问字符串“ printf”是否出现在行中的任何位置。如果该行包含5个字符,您将询问5次;如果它包含40个字符,您会询问40次。

假设您要尝试解决“ printf”可能多次出现的情况,请查找strstr()返回的内容,并使用它来调整内部搜索的开始位置循环(不应遍历每个字符,而应在找到新的“匹配”时循环)。

(致敬者:我正在回答这个问题,但由于我不想为他们做功课而不提供代码。)