lxmmmmmm 发表于 2020-4-10 16:20:45

小白提问,S1e2的课后作业编译运行没问题,显示的统计结果有问题



#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);
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);
                }
               
                _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 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("目前你总共写了 %ld 行代码!\n\n", total);
             system("pause");
             
             return 0;
}
这是我自己抄的代码。然后我也尝试过复制了小甲鱼给的代码,编译运行之后也是同样的提示,行数为0
求各位大佬,帮忙看看,谢谢~@小甲鱼

人造人 发表于 2020-4-10 17:36:44

.cpp 改 .c

lxmmmmmm 发表于 2020-4-10 17:45:15

本帖最后由 lxmmmmmm 于 2020-4-13 14:42 编辑

再问一个小白问题,为啥把.cpp改成.c就可以运行了呢?

人造人 发表于 2020-4-13 15:12:35

lxmmmmmm 发表于 2020-4-10 17:45
再问一个小白问题,为啥把.cpp改成.c就可以运行了呢?

因为这个程序是统计C语言源代码的行数,不是统计C++

lxmmmmmm 发表于 2020-4-14 17:39:16

好哒,谢谢大佬~

glf 发表于 2020-4-16 21:30:15

哪里的,cpp改为.c啊

lxmmmmmm 发表于 2020-4-22 14:23:28

程序写完之后,系统会让你保存,保存的界面上,编辑文件名的上一排你就可以选择是.cpp or .c
页: [1]
查看完整版本: 小白提问,S1e2的课后作业编译运行没问题,显示的统计结果有问题