听说这故事很美 发表于 2020-10-12 10:37:46

我在C语言的作业1中完成代码检测行数后显示我打的代码数是0(但我还是打了挺多的代...

就是这个代码

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

#define MAX      256

long total;

int countLines(const char *filename);
void findAllCodes(const char *path);
void findALLFiles(const char *path);

int countLines(const char *filename)
{
      FILE *fp;
      int count = 0;
      int temp;
      
      if ((fp = fopen(filename, "r")) == NULL)
      {
                fprintf(stderr, "Can not open the file:%s\n", filename);
                return 0;
      }
      
      while ((temp = fgetc(fp)) != EOF)
      {
                if (temp == '\n')
                {
                        count++;
                }
      }
      
      fclose(fp);
      
      return count;
}

void findAllCodes(const char *path)
{
      struct _finddata_t fa;
      long handle;
      char thePath, target;
      
      strcpy(thePath, path);
      if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L)
      {
                do
                {
                        sprintf(target, "%s/%s", path, fa.name);
                        total += countLines(target);
                }while (_findnext(handle, &fa) == 0);
      }
   
      _findclose(handle);
}

void findALLDirs(const char *path)
{
      struct _finddata_t fa;
      long handle;
      char thePath;
      
      strcpy(thePath, path);
      if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)
      {
                fprintf(stderr, "The path %s is wrong!\n",path);
                return;
      }
   
      do
      {      
                if (!strcmp(fa.name, ".") || !strcmp(fa.name, ".."))
                        continue;
                  
                if( fa.attrib == _A_SUBDIR)
                {      
                        sprintf(thePath, "%s/%s", path, fa.name);
                        findAllCodes(thePath);
                        findALLDirs(thePath);
                }
      }while (_findnext(handle, &fa) == 0);
   
      _findclose(handle);   
}

int main()
{
      char path = ".";
      
      printf("计算中...\n");
      
      findAllCodes(path);
      findALLDirs(path);
      
      printf("目前你总共写了 %ld 行代码!\n\n", total);
      system("pause");
      
      return 0;
}
求求大佬帮助 好想明白这是为什么呀 敲了好久 还一直在调试结果显示出来是0
心态炸了- -、

听说这故事很美 发表于 2020-10-12 10:40:01

{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}我顶

听说这故事很美 发表于 2020-10-12 10:40:34

我在顶一下(主要是怕帖子沉了{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:})

sunrise085 发表于 2020-10-12 10:46:05

很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行,把"/*.c" 改为 "/*.cpp" 试一下?

听说这故事很美 发表于 2020-10-12 22:18:50

sunrise085 发表于 2020-10-12 10:46
很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行, ...

不好意思之前面试去了 所以第一时间没有看到 现在才给你回信 。我刚刚照你的试了一下改成了cpp 可输出是还是0行。。。大佬怎么办

听说这故事很美 发表于 2020-10-12 22:19:37

{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}好无奈啊 初学者看不懂这个代码 只能求助大佬了

风过无痕1989 发表于 2020-10-12 22:32:37

你用什么编译器?我用DEV_C++ 输出正常,101行

听说这故事很美 发表于 2020-10-12 23:10:35

风过无痕1989 发表于 2020-10-12 22:32
你用什么编译器?我用DEV_C++ 输出正常,101行

刚刚有了 我也是DEV-C++

听说这故事很美 发表于 2020-10-12 23:11:12

sunrise085 发表于 2020-10-12 10:46
很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行, ...

可以了谢谢大佬

乐乐学编程 发表于 2020-10-12 23:25:59

听说这故事很美 发表于 2020-10-12 23:11
可以了谢谢大佬

可以了,就选一个最佳答案,算是对回答你问题的报答。如若不然,你下次提问,不一定会有人愿意回答了

风过无痕1989 发表于 2020-10-12 23:48:03

听说这故事很美 发表于 2020-10-12 22:18
不好意思之前面试去了 所以第一时间没有看到 现在才给你回信 。我刚刚照你的试了一下改成了cpp 可输出 ...

你没有明白他的意思。你用 DEV_C++, 那么在编译时,会让你保存一个文件名,如果保存时没有修改后缀,系统默认的就是 C++ 程序(后缀是 .cpp),如果你修改了保存时的后缀为 .c,那么就是C程序。

本题目是既可以在C程序运行,也可以在C++程序运行,就看你的文件后缀是 .c 还是 .cpp。

如果是 .c, if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L) 就不用修改

如果是 .cpp ,这一句就修改为:if((handle = _findfirst(strcat(thePath, "/*.cpp"), &fa)) != -1L)

乐乐学编程 发表于 2020-10-13 16:36:01

故事很美,人也得做得漂亮

听说这故事很美 发表于 2020-10-13 23:28:25

乐乐学编程 发表于 2020-10-13 16:36
故事很美,人也得做得漂亮

好的,没怎么逛过贴吧,所以不是很懂不好意思

听说这故事很美 发表于 2020-10-13 23:29:35

风过无痕1989 发表于 2020-10-12 23:48
你没有明白他的意思。你用 DEV_C++, 那么在编译时,会让你保存一个文件名,如果保存时没有修改后缀,系 ...

收到,谢谢(一天都在上课所以只有晚上才有时间看帖子)

qiandeliang 发表于 2020-10-14 08:46:39

1111
页: [1]
查看完整版本: 我在C语言的作业1中完成代码检测行数后显示我打的代码数是0(但我还是打了挺多的代...