King.c 发表于 2019-8-10 14:49:55

大家好,我是新学C语言的小白,目前刚接触带你学C带你飞的课程。

我是C语言初学,问一下,这个计算代码量的程序写完也运行了。但是结果却是0,是哪里出了问题?存储路径有问题吗?

jackz007 发表于 2019-8-10 15:03:14

    你是在说单口相声吗?上代码呀!

    代码不要贴成图片,更简单的方法是贴到代码框里。试试快捷工具栏里标有 "<>" 的按钮。

King.c 发表于 2019-8-10 15:12:06

jackz007 发表于 2019-8-10 15:03
你是在说单口相声吗?上代码呀!

    代码不要贴成图片,更简单的方法是贴到代码框里。试试快捷工具 ...


#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);

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

King.c 发表于 2019-8-10 15:13:04


#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);

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

King.c 发表于 2019-8-10 15:14:00

jackz007 发表于 2019-8-10 15:03
你是在说单口相声吗?上代码呀!

    代码不要贴成图片,更简单的方法是贴到代码框里。试试快捷工具 ...

代码我都是照着抄的,没报错运行了,结果显示0 - - ,醉了

jackz007 发表于 2019-8-10 15:21:32

      楼主再抄这个代码看看呢:
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 256

long total = 0 ;

bool filter(const char * fn)
{
      bool ret                                                                                                                     ;
      int k , m                                                                                                                      ;

      ret = false                                                                                                                  ;
      m = strlen(fn)                                                                                                               ;
      for(k = m - 1 ; k > 0 && fn != '.' ; k --)                                                                                  ;
      if((k > 0 && k < m - 1) && (! stricmp(& fn , ".c") || ! stricmp(& fn , ".h") || ! stricmp(& fn , ".cpp"))) ret = true ;
      return ret                                                                                                                     ;
}

int countLines(const char * filename)
{
      FILE * fp                                                ;
      int count = 0                                          ;

      if((fp = fopen(filename , "r")) != NULL) {
                while(! feof(fp)) if(fgetc(fp) == '\n') count ++ ;
                fclose(fp)                                       ;
      } else {
                count = - 1                                    ;
      }
      printf("%6d | %s\n" , count , filename)                  ;
      return count                                             ;
}

void findall(const char * path)
{
      struct _finddata_t fa                                                                     ;
      long handle                                                                                 ;
      char bf , wb                                                                      ;
      int m                                                                                       ;

      strcpy(bf , path)                                                                           ;
      if(bf != '\\') strcat(bf , "\\")                                          ;
      strcpy(wb , bf)                                                                           ;
      strcat(wb , "*.*")   ;
      if((handle = _findfirst(wb , & fa)) != -1L) {
                strcpy(wb , bf)                                                                     ;
                strcat(wb , fa . name)                                                            ;               
                if (fa . attrib & _A_SUBDIR) {
                        if(strcmp(fa . name , ".") && strcmp(fa . name , "..")) findall(wb)         ;
                } else {
                        if(filter(wb) && ((m = countLines(wb)) > 0)) total += m                     ;
                }
                while(! _findnext(handle , & fa)) {
                        strcpy(wb , bf)                                                             ;
                        strcat(wb , fa . name)                                                      ;               
                        if (fa . attrib & _A_SUBDIR) {
                              if(strcmp(fa . name , ".") && strcmp(fa . name , "..")) findall(wb) ;
                        } else {
                               if(filter(wb) && ((m = countLines(wb)) > 0)) total += m            ;                     
                        }
                }
                _findclose(handle)                                                                  ;
      }                        
}

int main(void)
{
      char wb                                                 ;

      total = 0                                                    ;
      printf("Input the search path : ")                     ;
      scanf("%s" , wb)                                             ;
      if(strlen(wb) > 0) {
                findall(wb)                                          ;
                printf("    Total source code lines : %d\n" , total) ;
      }
}

辉煌耀世 发表于 2019-8-10 15:43:24

大佬商量个事行不加个微信一起学   主要是我想时不时借一下你的号给钱也行   我晚上用也行

buddy85 发表于 2019-8-10 21:13:22

我也是跟楼主遇到同样的问题,请问哪位大佬知道怎么回事?!

King.c 发表于 2019-8-10 21:22:40

buddy85 发表于 2019-8-10 21:13
我也是跟楼主遇到同样的问题,请问哪位大佬知道怎么回事?!

很奇怪,我代码重抄了一遍又好了。关键没报错运行了,检查了好几遍代码也没抄错- - ,打算学到后面再回头来看看啥问题。{:5_99:}

King.c 发表于 2019-8-10 21:23:34

辉煌耀世 发表于 2019-8-10 15:43
大佬商量个事行不加个微信一起学   主要是我想时不时借一下你的号给钱也行   我晚上用也行

{:5_109:}我这号也是跟同学两个人买的。AA

King.c 发表于 2019-8-10 21:24:07

jackz007 发表于 2019-8-10 15:21
楼主再抄这个代码看看呢:

辛苦辛苦,我主要是想知道我原来代码错在哪里- -,谢谢你啊。

buddy85 发表于 2019-8-10 21:35:49

King.c 发表于 2019-8-10 21:22
很奇怪,我代码重抄了一遍又好了。关键没报错运行了,检查了好几遍代码也没抄错- - ,打算学到后面再回头 ...

你在吗?

King.c 发表于 2019-8-10 22:08:15

buddy85 发表于 2019-8-10 21:35
你在吗?

在线的,

jiuyuan 发表于 2019-8-10 22:46:12

楼主,你看下你的编译器保存的C文件后缀名是不是“.c”文件。如果不是,注意代码if((handle = _findfirst(strcat(thePath,"/.c"),&fa))!= -1L),把“.c”改一下,改成你保存的文件后缀名。比如C++的“.cpp”格式。你可以这样试一下。

buddy85 发表于 2019-8-12 07:54:26

King.c 发表于 2019-8-10 22:08
在线的,

在吗,能加个微信或者QQ吗?

2164930278 发表于 2019-8-20 19:26:30

King.c 发表于 2019-8-10 15:13


可以实验一下,既然你写的代码运行结果为零,那把小甲鱼的代码复制粘贴在运行,看看结果是什么。要是结果.还是零,那可能是IDE的原因了。之后就建议百度 了

黄皮耗子 发表于 2019-8-21 05:48:27

主楼我想问一下第六页的这个第一个程序这章的开发工具 code blocks和Dev-c++是在哪下载的 书上的网址没有

2164930278 发表于 2019-8-21 11:57:57

黄皮耗子 发表于 2019-8-21 05:48
主楼我想问一下第六页的这个第一个程序这章的开发工具 code blocks和Dev-c++是在哪下载的 书上的网址没有

这两个IDE可以在“论坛”    → “《带你学C带你飞》【第一季】”→扩展阅读里面有,自己找下
需要弄百度网盘哦!里面有链接你点击保存,然后在下载。
温馨提示:百度网盘限速,建议使用PanDownload上网下载,注:先要保存要下的文件,或你可以提取链接
页: [1]
查看完整版本: 大家好,我是新学C语言的小白,目前刚接触带你学C带你飞的课程。