时喵s 发表于 2020-2-26 14:08:05

萌新求助

带你学c带你飞S1E2课后作业里第52行一直报错
有没有大佬帮忙解决下吖?谢谢

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

#define MAX      256

long total;

int coountlines(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;
       
        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);
        }
       
        _findlose(handle);
        }
       
        void findALLDir(const char *path)\
        {
                struct _finddata_t fa;
                long handle;
                chanr thePath;
               
                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 = ".";
                                                       
                                                        printf("计算中...\n");
                                                       
                                                        findAllCodes(path);
                                                        findALLDirs(path);
                                                       
                                                        printf("目前你总共写了 %1d 行代码!\n\n", tota1);
                                                        system("pause");
                                                       
                                                        return 0:
                                                }

qiuyouzhi 发表于 2020-2-26 14:18:57

本帖最后由 qiuyouzhi 于 2020-2-26 14:30 编辑

你没有定义target(在FindAllCodes里),代码给你改好了:
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX      256

long total;

int coountlines(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, target;
      
      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);
      }
      
      _findlose(handle);
      }
      
      void findALLDir(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 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 = ".";
                                                      
                                                      printf("计算中...\n");
                                                      
                                                      findAllCodes(path);
                                                      findALLDirs(path);
                                                      
                                                      printf("目前你总共写了 %1d 行代码!\n\n", tota1);
                                                      system("pause");
                                                      
                                                      return 0:
                                                }
如果有帮助,请设最佳答案{:10_254:}
页: [1]
查看完整版本: 萌新求助