鱼C论坛

 找回密码
 立即注册
查看: 2067|回复: 16

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

[复制链接]
发表于 2022-8-5 18:59:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

我的代碼沒有敲錯,程序可以運行
QQ图片20220805185742.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 19:05:08 | 显示全部楼层
原代码和你的代码发上来。
你指定的目录?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 20:06:04 | 显示全部楼层
2楼,目录不太可能,他本身是有代码量的!(可能)

-----------------------------------------------------------------------
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 20:28:49 | 显示全部楼层
我运行的也是0,估计小甲鱼写错了。等你学到相关知识后应该就可以改正了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该没有写错,我运行是有结果的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 20:40:30 | 显示全部楼层
临时号 发表于 2022-8-5 20:37
应该没有写错,我运行是有结果的


那就奇怪了,可能是编译器不一样吧,我跟甲鱼不是用一种的软件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-6 19:11:37 From FishC Mobile | 显示全部楼层
他统计的是他所在目录中除他以外的代码量,可能楼主同目录中没有其他代码文件吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-6 19:17:34 | 显示全部楼层
刘子诺 发表于 2022-8-5 20:06
2楼,目录不太可能,他本身是有代码量的!(可能)

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-7 08:30:32 | 显示全部楼层
164342146 发表于 2022-8-6 19:11
他统计的是他所在目录中除他以外的代码量,可能楼主同目录中没有其他代码文件吧

我的就把他本身算进去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-7 11:32:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-7 18:28:19 | 显示全部楼层
我的也是0,而且我的是复制进去的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[MAX],target[MAX];
               
                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[MAX];
               
                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[MAX] = ".";
               
                printf("計算中...\n");
               
                findAllCodes(path);
                findALLDirs(path);
               
                printf("目前你總共寫了 %ld 行代碼!\n\n",total);
                system("pause");
               
                return 0;
}




这个是我的代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-14 18:58:28 | 显示全部楼层
1074953350 发表于 2022-8-14 17:09
#include
#include
#include

2022814_185805.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-16 08:45:48 | 显示全部楼层
我用的是VScode 我把小甲鱼的Windows代码复制粘贴并不能显示代码行数 提示[Running] cd "d:\soft\visual studio code\xiangmu\" && gcc a.c -o a && "d:\soft\visual studio code\xiangmu\"a

[Done] exited with code=3221225477 in 0.221 seconds     求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-16 09:00:49 | 显示全部楼层

啥意思 把目录复制进去吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-16 11:22:39 | 显示全部楼层
FWJ-Einstein 发表于 2022-8-16 09:00
啥意思 把目录复制进去吗?

char path[MAX] = ".";
指定路径。
char path[MAX] = "D:\\ctest";
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-16 15:05:44 | 显示全部楼层
楼主是用什么编译器?是vs2019吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 08:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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