c - 交流计数器的实现
问题描述
我编写了 ac 程序来计算单词“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;
}
解决方案
您正在遍历输入行中的每个字符,然后询问字符串“printf”是否出现在该行的任何位置。如果该行包含 5 个字符,您将询问 5 次;如果它包含 40 个字符,你会问这个 40 次。
假设您试图涵盖“printf”可以在该行上出现多次的情况,请查看strstr()返回的内容,并使用它来调整内部循环中搜索的起始位置(应该t 遍历每个字符,但应该在找到新的“命中”时循环)。
(注意投票者:我正在回答这个问题,但没有提供代码,因为我不想为他们做作业。)
推荐阅读
- sql - 查询两张不平衡的表
- python - 无法在 Robot Framework 中启动自动化测试用例
- spring - 具有多对多关系的 Rest API 路径
- javascript - 调度表单数据推送到mongodb
- spring-security - 不同用户的相同角色具有不同的操作弹簧启动安全性
- matplotlib - Matplotlib:barh 全宽条
- c++ - 为什么 ADL 不适用于未命名的 initializer_list?
- maps - HERE Maps Satellite Tiles 没有像 BING Maps 那样在地图上显示地址
- html - 如何使用三角形中设置的 3 个点创建 svg 渐变,这些点混合在一起
- scala - TCP 服务器处理多个连接