鱼C论坛

 找回密码
 立即注册
查看: 966|回复: 7

[已解决]S1E2中遇到undeclared和符号错误

[复制链接]
发表于 2020-9-4 11:17:33 | 显示全部楼层 |阅读模式

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

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

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);       12行      
void findAllCodes(const char *path);
void findALLFile (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 thepathp[MAX], target[MAX];
            
            strcpy(thePath, path);                                                                        47行
            if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L)
                {
                            do
                        {
                                    sprintf(target, "%s/%s", path, fa.name);
                                    total += countLines(target);                                       53行
                                }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("目前你总共写了 %1d 行代码! \n\n", total);                             98行      
            system("pause");
            
            return 0;
}

说是12行标识符有问题
47  53  98是undeclared??我对比鱼老师的那个课后作业代码没什么不一样啊


最佳答案
2020-9-4 12:17:46
本帖最后由 风过无痕1989 于 2020-9-4 12:29 编辑

第9行 long total 语句后面缺少分号

第44行 char thepathp[MAX],target[MAX]; 是 thepath[MAX],而不是 thepathp[MAX],编译时出现 thepath 没有定义的错误

第98行的错误,是你将控制符 l (long 的第一个字母) 写成了数字 1 了

你在代码语句后标注多少行是可以的,不过得加上双斜杠 // 或者 /*    */

其他的一些告警,可视程序运行情况再酌情处理,没有大的问题也就不必处理了

刚才我复制你的程序,出现20多处错误,就是因为你没有加双斜杠和有些逗号是中文的

其他的错误,我查查看
QQ图片20200904111528.png
QQ图片20200904111500.png

本帖被以下淘专辑推荐:

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

使用道具 举报

 楼主| 发表于 2020-9-4 11:23:37 | 显示全部楼层
而且我拿老师直接给的代码去运行出来居然是八万多(用的是devc++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 11:29:10 | 显示全部楼层
两个问题:
一: 第10行  long total   后面没有分号
二: 第47行  thePath     没有定义,自己定义一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 12:17:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-9-4 12:29 编辑

第9行 long total 语句后面缺少分号

第44行 char thepathp[MAX],target[MAX]; 是 thepath[MAX],而不是 thepathp[MAX],编译时出现 thepath 没有定义的错误

第98行的错误,是你将控制符 l (long 的第一个字母) 写成了数字 1 了

你在代码语句后标注多少行是可以的,不过得加上双斜杠 // 或者 /*    */

其他的一些告警,可视程序运行情况再酌情处理,没有大的问题也就不必处理了

刚才我复制你的程序,出现20多处错误,就是因为你没有加双斜杠和有些逗号是中文的

其他的错误,我查查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-4 12:36:19 | 显示全部楼层
我叫MD 发表于 2020-9-4 11:29
两个问题:
一: 第10行  long total   后面没有分号
二: 第47行  thePath     没有定义,自己定义一下

你好,我自个是跟着S1E2课后作业抄的,还不知怎么看没定义,你能告诉我得怎么改吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-4 12:39:02 | 显示全部楼层
我叫MD 发表于 2020-9-4 11:29
两个问题:
一: 第10行  long total   后面没有分号
二: 第47行  thePath     没有定义,自己定义一下

你好,不用了原来我前面抄错了,已解决,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-4 12:41:25 | 显示全部楼层
风过无痕1989 发表于 2020-9-4 12:17
第9行 long total 语句后面缺少分号

第44行 char thepathp[MAX],target[MAX]; 是 thepath[MAX],而不是  ...

你好,按照你说的全部错误搞定了,谢谢,但是我运行时出来的说我打了八万多,可是小鱼老师那个答案却只有101
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 15:21:18 | 显示全部楼层
gzq44 发表于 2020-9-4 12:41
你好,按照你说的全部错误搞定了,谢谢,但是我运行时出来的说我打了八万多,可是小鱼老师那个答案却只有 ...

能正常运行了,说明程序已经没有大的问题了。对不上答案,只要去查一查那些告警,看看是哪里的小错误 ( 如数据类型转换 )造成的即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 13:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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