cpp711 发表于 2022-7-3 15:55:34

第一节代码运行出问题

#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX      256

long tatal;

int conutLines(const char *fliename);
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);   (这里出现 'total' was not declared in this scope)
                             }while (_findnext(handle, &fa) == 0);
                  }
                  
                  _findclose(handle);
}

viod findALLDirs(const char *path)
{
      struct _finddata_t fa;
                long handle
                char thePath;
               
                strcpy(thePath, path);
                if((hanlde = _findfirst(stract(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);
                                            findALLCodes(thePath);
                               }                  
                }while (_findnext(handle, &fa) == 0);
               
                _findClose(handle);       
}

int main()
{
          char path = ".";
               
                printf("计算中...\n");
               
                findALLCodes(path);
                findALLDirs(path);
               
                printf("目前你总共写了 %1d 行代码! \n\n", total);
                system("pause");
               
                return 0;
}
                                求分析问题 谢谢!

cpp711 发表于 2022-7-3 16:03:25

这是小甲鱼第一期作业 跟着敲代码编译出现问题 无法解决 特来求助 谢谢

风车呼呼呼 发表于 2022-7-3 16:05:06

'total' was not declared in this scope
这错误信息已经告诉你了,total没有声明
你全局变量写的是 long tatal;

临时号 发表于 2022-7-3 16:28:35

好多地方抄错了,我已经帮你改了,注意看我的注释
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX      256

long total;// 这里是total,你写成了tatal

int countLines(const char *fliename);// 这里是countLines,你写成了conutLines
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);   //(这里出现 'total' was not declared in this scope)
                               }while (_findnext(handle, &fa) == 0);
                  }
                  
                  _findclose(handle);
}

void findALLDirs(const char *path)// 这里void写错了,你写成了viod
{
      struct _finddata_t fa;
                long handle;// 这里你少写了一个;
                char thePath;
               
                strcpy(thePath, path);
                // 这里是strcat,你写成了stract
                if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)// 这个地方是handle,你写成了hanlde
                {
                           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);
                                              findALLCodes(thePath);
                                 }                  
                }while (_findnext(handle, &fa) == 0);
               
                _findclose(handle);// 这里是_findclose,你写成了_findClose
}

int main()
{
            char path = ".";
               
                printf("计算中...\n");
               
                findALLCodes(path);
                findALLDirs(path);
               
                printf("目前你总共写了 %ld 行代码! \n\n", total);
                system("pause");
               
                return 0;
}

cpp711 发表于 2022-7-3 16:38:24

临时号 发表于 2022-7-3 16:28
好多地方抄错了,我已经帮你改了,注意看我的注释

谢谢(*°∀°)=3

cpp711 发表于 2022-7-3 16:44:26

cpp711 发表于 2022-7-3 16:38
谢谢(*°∀°)=3

还得去温习温习基础

cpp711 发表于 2022-7-3 16:53:58

风车呼呼呼 发表于 2022-7-3 16:05
'total' was not declared in this scope
这错误信息已经告诉你了,total没有声明
你全局变量写 ...

那怎么解决呢{:10_254:}
页: [1]
查看完整版本: 第一节代码运行出问题