gzq44 发表于 2020-9-4 11:17:33

S1E2中遇到undeclared和符号错误


#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, target;
            
            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;
               
      strcpy(thePath,path);
      if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)   
      {
                              fprintf(stderr, "The path %s iswrong!\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("目前你总共写了 %1d 行代码! \n\n", total);                           98行      
            system("pause");
            
            return 0;
}

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


gzq44 发表于 2020-9-4 11:23:37

而且我拿老师直接给的代码去运行出来居然是八万多(用的是devc++

我叫MD 发表于 2020-9-4 11:29:10

两个问题:
一: 第10行long total   后面没有分号
二: 第47行thePath   没有定义,自己定义一下

风过无痕1989 发表于 2020-9-4 12:17:46

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

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

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

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

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

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

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

其他的错误,我查查看

gzq44 发表于 2020-9-4 12:36:19

我叫MD 发表于 2020-9-4 11:29
两个问题:
一: 第10行long total   后面没有分号
二: 第47行thePath   没有定义,自己定义一下

你好,我自个是跟着S1E2课后作业抄的,还不知怎么看没定义,你能告诉我得怎么改吗

gzq44 发表于 2020-9-4 12:39:02

我叫MD 发表于 2020-9-4 11:29
两个问题:
一: 第10行long total   后面没有分号
二: 第47行thePath   没有定义,自己定义一下

你好,不用了原来我前面抄错了,已解决,谢谢你

gzq44 发表于 2020-9-4 12:41:25

风过无痕1989 发表于 2020-9-4 12:17
第9行 long total 语句后面缺少分号

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

你好,按照你说的全部错误搞定了,谢谢,但是我运行时出来的说我打了八万多,可是小鱼老师那个答案却只有101

风过无痕1989 发表于 2020-9-4 15:21:18

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

能正常运行了,说明程序已经没有大的问题了。对不上答案,只要去查一查那些告警,看看是哪里的小错误 ( 如数据类型转换 )造成的即可
页: [1]
查看完整版本: S1E2中遇到undeclared和符号错误