crispTT 发表于 2021-11-2 20:38:51

求大佬帮忙看看,第一次作业就爆炸了

本帖最后由 crispTT 于 2021-11-2 21:01 编辑



检查了半天还是没有发现错误在哪,求大佬救命!

crispTT 发表于 2021-11-2 20:42:48

本帖最后由 crispTT 于 2021-11-2 20:46 编辑

include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>

#define MAX 256

long total;

int countLines(const char *filename);
int isCode(const char *filename);
void findAllDirs(const char *filename);

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;
}


int isCode(const char *filename)
{
      int length;

      length = strlen(filename);

      if(!strcmp(filename + (length - 2),".c"))
      {
                return 1;
      }
      else
      {
                return 0;
      }
}

void findAllDirs(const char *path)
{
      DIR *dp;
      struct dirent *entry;
c       struct stat statbuf;

      if((dp = opendir(path)) == NULL)
      {
                fprintf(stderr,"The path %s is wrong!\n",path);
                return;
      }

      chdir(path);
      while((entry = readdir(dp)) != NULL)
      {
                lstat(entry->d_name, &statbuf);

                if(!strcmp(".",entry->d_name) || !strcmp("..",entry->d_name))
                        continue;

               if(S_ISDIR(statbuf.st_mode))
                {
                        findAllDirs(entry->d_name);
                }
                else
                {
                        if(isCode(entry->d_name))
                        {
                              total += countLines(entry->d_name);
                        }
                }
      }

      chair("..");
      closedir(dp);
}
int main()
{
      char path = ".";

      printf("计算中...\n");

      findAllDirs(path);

      printf("目前你总共写了 %ld 行代码! \n\n",total);

      return 0;

crispTT 发表于 2021-11-2 20:44:19

求大佬们看看,孩子是哪里出现了问题

crispTT 发表于 2021-11-2 21:02:32

孩子已经自行找到问题,不麻烦大佬们了,点进来的大佬们不好意思{:10_266:}
页: [1]
查看完整版本: 求大佬帮忙看看,第一次作业就爆炸了