鱼C论坛

 找回密码
 立即注册
查看: 315|回复: 12

萌新又又又来了

[复制链接]
发表于 2024-8-6 21:35:57 | 显示全部楼层 |阅读模式

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

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

x
#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;
}
为什么老污龟给的这段代码在vs上运行会出错呢
会不会是我文件位置没放对还是什么的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-6 21:38:13 | 显示全部楼层
哎呀,萌新又来了!这段代码就像我第一次做蛋炒饭,满是错误和意外的“调料”。让我们一块儿看看哪里出了问题!

首先,我们来看看头文件部分。你没有包含 `<stdio.h>` 和 `<string.h>`,但是引用了它们使用的函数,比如 `fopen` 和 `strcpy`。所以别忘了加上这两个头文件,像这样:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>

接下来,有几个地方需要注意:

1. **字符数组的声明**:在 `findAllCodes` 和 `findALLDirs` 函数中,`char thePath, target;` 应该声明为字符数组,而不是单个字符。你可以这样做:

char thePath[MAX], target[MAX];

2. **路径拼接**:在使用 `strcat` 之前,不要忘记确保 `thePath` 数组已经初始化为一个有效的字符串。可以在使用之前清空这个数组,像这样:

strcpy(thePath, path);

3. **判断目录的方式**:在 `findALLDirs` 函数中,你在判断文件属性时,`fa.attrib == _A_SUBDIR` 用于检测是否是目录,如果你的编译器不支持 `_finddata_t` 和相关的文件操作,你可能会遇到麻烦。在某些系统中,这个结构体的定义可能会有所不同。

4. **main函数中的路径**:你在 `main()` 函数中,变量 `path` 声明为一个字符,但实际上应该是字符串。修正为字符数组:

char path[MAX] = ".";

5. **总行数初始值**:在 `main` 函数中,你没有初始化 `total`,虽然 `total` 会在 `countLines` 中累加,但还是建议将其初值设置为0,以免出现意外情况。

经过这些修改后,你的代码应该能顺利运行,并告诉你写了多少行代码,就像一位“代码统计师”一样。不过如果还有其他问题,就像我做菜的时候加盐过多,不妨再次询问,我会乐意帮助你!加油哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-7 03:46:49 | 显示全部楼层
VS 可能不行?提示什么错误信息?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-7 14:40:13 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-8-7 03:46
VS 可能不行?提示什么错误信息?

链接: https://pan.baidu.com/s/1JcFFmejb-m5ObiQoSrmyNA?pwd=4p3d 提取码: 4p3d 复制这段内容后打开百度网盘手机App,操作更方便哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-8 02:14:03 | 显示全部楼层
希儿的 发表于 2024-8-7 14:40
链接: https://pan.baidu.com/s/1JcFFmejb-m5ObiQoSrmyNA?pwd=4p3d 提取码: 4p3d 复制这段内容后打开百度 ...

这啥?报错信息咋直接发了个网盘哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-8 12:27:21 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-8-8 02:14
这啥?报错信息咋直接发了个网盘哈哈

哈哈,我不会发图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-8 12:28:01 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-8-8 02:14
这啥?报错信息咋直接发了个网盘哈哈

而且vs的报错信息我复制不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-9 00:19:03 | 显示全部楼层
希儿的 发表于 2024-8-8 12:28
而且vs的报错信息我复制不了

你是使用 VSCode 进行编译还是 Virtual Studio 呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-9 13:21:26 | 显示全部楼层
Virtual Studio 2022
是这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-9 16:07:08 | 显示全部楼层
希儿的 发表于 2024-8-9 13:21
Virtual Studio 2022
是这个

这个可能是环境问题哦,没有支持的库之类的错误。

可以试试老师课程中的学习环境。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-9 17:31:28 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-8-9 16:07
这个可能是环境问题哦,没有支持的库之类的错误。

可以试试老师课程中的学习环境。

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

使用道具 举报

发表于 2024-8-13 17:04:30 | 显示全部楼层
你管这叫萌新?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-13 23:54:05 | 显示全部楼层

哈,这是老污龟的课后作业哦,要求我们抄的

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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