我编写了一个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;
}
答案 0 :(得分:1)
您要遍历输入行中的每个字符,然后询问字符串“ printf”是否出现在行中的任何位置。如果该行包含5个字符,您将询问5次;如果它包含40个字符,您会询问40次。
假设您要尝试解决“ printf”可能多次出现的情况,请查找strstr()返回的内容,并使用它来调整内部搜索的开始位置循环(不应遍历每个字符,而应在找到新的“匹配”时循环)。
(致敬者:我正在回答这个问题,但由于我不想为他们做功课而不提供代码。)