1074953350 发表于 2022-8-5 18:59:06

课后作业S1E2的《统计当前目录及所有子目录下,C 语言源文件的代码总行数。》

爲什麽出來的結果是0呢?

我的代碼沒有敲錯,程序可以運行

ba21 发表于 2022-8-5 19:05:08

原代码和你的代码发上来。
你指定的目录?

刘子诺 发表于 2022-8-5 20:06:04

2楼,目录不太可能,他本身是有代码量的!(可能)

-----------------------------------------------------------------------

额外减小 发表于 2022-8-5 20:28:49

我运行的也是0,估计小甲鱼写错了。等你学到相关知识后应该就可以改正了{:10_256:}

临时号 发表于 2022-8-5 20:37:41

额外减小 发表于 2022-8-5 20:28
我运行的也是0,估计小甲鱼写错了。等你学到相关知识后应该就可以改正了

应该没有写错,我运行是有结果的

额外减小 发表于 2022-8-5 20:40:30

临时号 发表于 2022-8-5 20:37
应该没有写错,我运行是有结果的

那就奇怪了,可能是编译器不一样吧,我跟甲鱼不是用一种的软件

164342146 发表于 2022-8-6 19:11:37

他统计的是他所在目录中除他以外的代码量,可能楼主同目录中没有其他代码文件吧

LHAO_XIA 发表于 2022-8-6 19:17:34

刘子诺 发表于 2022-8-5 20:06
2楼,目录不太可能,他本身是有代码量的!(可能)

------------------------------------------------------ ...

{:5_102:}

刘子诺 发表于 2022-8-7 08:30:32

164342146 发表于 2022-8-6 19:11
他统计的是他所在目录中除他以外的代码量,可能楼主同目录中没有其他代码文件吧

我的就把他本身算进去了

aaron0919 发表于 2022-8-7 11:32:50

{:5_94:}

阿路同学 发表于 2022-8-7 18:28:19

我的也是0,而且我的是复制进去的

1074953350 发表于 2022-8-14 17:09:10

ba21 发表于 2022-8-5 19:05
原代码和你的代码发上来。
你指定的目录?


#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;
}




这个是我的代码


ba21 发表于 2022-8-14 18:58:28

1074953350 发表于 2022-8-14 17:09
#include
#include
#include


FWJ-Einstein 发表于 2022-8-16 08:45:48

我用的是VScode 我把小甲鱼的Windows代码复制粘贴并不能显示代码行数 提示 cd "d:\soft\visual studio code\xiangmu\" && gcc a.c -o a && "d:\soft\visual studio code\xiangmu\"a

exited with code=3221225477 in 0.221 seconds   求助

FWJ-Einstein 发表于 2022-8-16 09:00:49

ba21 发表于 2022-8-14 18:58


啥意思 把目录复制进去吗?

ba21 发表于 2022-8-16 11:22:39

FWJ-Einstein 发表于 2022-8-16 09:00
啥意思 把目录复制进去吗?

char path = ".";
指定路径。
char path = "D:\\ctest";

霸王龟 发表于 2022-8-16 15:05:44

楼主是用什么编译器?是vs2019吗

周伯渊 发表于 2024-9-26 16:14:10

我也是会出现这个问题,但是它总是显示我写了7行代码。但我已经将每4课的作业代码都写完,放到子文件夹里面去了。
页: [1]
查看完整版本: 课后作业S1E2的《统计当前目录及所有子目录下,C 语言源文件的代码总行数。》