我从C开始 发表于 2021-1-24 23:35:52

求求哪位大佬帮我看一下这个问题怎么解决,我是新人这是我全部的鱼币了。

编译后如图显示,下面是原码
#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 *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;
      }
      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;
               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)
                         {
                         istat(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);
                         }
}
}
       chdir("..");
closedir(dp);
}
int main()
{char path=".";

      printf("计算中...\n");
      findAllDirs(path);
      printf("目前你总共写了%1d行代码!\n\n",total);
      return 0;
                }

guoxingsan 发表于 2021-1-24 23:35:53

63行:istat 替换为 stat或lstat

心驰神往 发表于 2021-1-25 11:13:26

我没用Linux

我从C开始 发表于 2021-1-26 10:34:02

guoxingsan 发表于 2021-1-24 23:35
63行:istat 替换为 stat或lstat

谢谢,可以了
页: [1]
查看完整版本: 求求哪位大佬帮我看一下这个问题怎么解决,我是新人这是我全部的鱼币了。