鱼C论坛

 找回密码
 立即注册
查看: 2001|回复: 3

请求版主帮忙删帖

[复制链接]
发表于 2023-9-10 15:14:30 | 显示全部楼层
根据你提供的代码,第42行报错的原因是函数名称错误。将 findALLDirs 改为 findALLFiles 即可解决此问题。

修改后的代码如下:

  1. #include <io.h>
  2. #include <direct.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>

  6. #define MAX 256
  7. long total;

  8. int countLines(const char *filename);
  9. void findAllCodes(const char *path);
  10. void findALLFiles(const char *path);

  11. int countLines(const char *filename) {
  12.     FILE *fp;
  13.     int count = 0;
  14.     int temp;
  15.    
  16.     if ((fp = fopen(filename, "r")) == NULL) {
  17.         fprintf(stderr, "Cannot open the file: %s\n", filename);
  18.         return 0;
  19.     }

  20.     while ((temp = fgetc(fp)) != EOF) {
  21.         if (temp == '\n') {
  22.             count++;
  23.         }
  24.     }

  25.     fclose(fp);
  26.     return count;
  27. }

  28. void findAllCodes(const char *path) {
  29.     struct _finddata_t fa;
  30.     long handle;
  31.     char thePath[MAX];
  32.     char target[MAX];
  33.    
  34.     strcpy(thePath, path);
  35.    
  36.     if ((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L) {
  37.         do {
  38.             sprintf(target, "%s%s", path, fa.name);
  39.             total += countLines(target);
  40.         } while (_findnext(handle, &fa) == 0);
  41.     }

  42.     _findclose(handle);
  43. }

  44. void findALLFiles(const char *path) {
  45.     struct _finddata_t fa;
  46.     long handle;
  47.     char thePath[MAX];
  48.    
  49.     strcpy(thePath, path);
  50.    
  51.     if ((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L) {
  52.         fprintf(stderr, "The path %s is wrong!\n", path);
  53.         return;
  54.     }
  55.    
  56.     do {
  57.         if (!strcmp(fa.name, ".") || !strcmp(fa.name, "..")) {
  58.             continue;
  59.         }
  60.         if (fa.attrib == _A_SUBDIR) {
  61.             sprintf(thePath, "%s%s", path, fa.name);
  62.             findAllCodes(thePath);
  63.             findALLFiles(thePath);
  64.         }
  65.     } while (_findnext(handle, &fa) == 0);

  66.     _findclose(handle);
  67. }

  68. int main() {
  69.     char path[MAX] = ".";
  70.    
  71.     printf("Calculating...\n");
  72.     findAllCodes(path);
  73.     findALLFiles(path);
  74.     printf("You have written a total of %ld lines of code!\n\n", total);
  75.    
  76.     system("pause");
  77.     return 0;
  78. }
复制代码


希望这个解答对您有帮助。如果您有任何其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-29 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表