奔跑的小鸟11 发表于 2020-10-12 17:18:09

DEV C++ 中运行程序错误后 某行代码被红色条框起来是什么意思


#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=".";
print("计算中...\n");
findALLCodes(path);
findALLDirs(path);
printf("目前你总共写了%ld行代码!\n\n",total);
system("pause");
return 0;
}

奔跑的小鸟11 发表于 2020-10-12 17:21:28

void findALLCodes(const char *path);这条代码下面那个大括号会被框起

巴巴鲁 发表于 2020-10-12 20:18:22

语法错误呗

奔跑的小鸟11 发表于 2020-10-12 20:42:37

巴巴鲁 发表于 2020-10-12 20:18
语法错误呗

哪错了呀

奔跑的小鸟11 发表于 2020-10-12 21:11:47

巴巴鲁 发表于 2020-10-12 20:18
语法错误呗

大哥 大哥 哪里错了呀

巴巴鲁 发表于 2020-10-12 21:21:40

奔跑的小鸟11 发表于 2020-10-12 21:11
大哥 大哥 哪里错了呀

这是你自己敲得?

奔跑的小鸟11 发表于 2020-10-12 21:38:19

巴巴鲁 发表于 2020-10-12 21:21
这是你自己敲得?

抄的小甲鱼的

奔跑的小鸟11 发表于 2020-10-12 21:40:09

奔跑的小鸟11 发表于 2020-10-12 21:38
抄的小甲鱼的

不知道那个大括号为什么错了

奔跑的小鸟11 发表于 2020-10-13 21:06:55

巴巴鲁 发表于 2020-10-12 21:21
这是你自己敲得?

大哥 大哥 求支招啊

风过无痕1989 发表于 2020-10-13 23:42:40

你的程序共有三个错误,已经帮你修改了,看程序中的注释处


#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;    // 定义结构体类型与名称之间( struct 后面)少一个空格
    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");    //printf()写成了print()
    findALLCodes(path);
    findALLDirs(path);
    printf("目前你总共写了%ld行代码!\n\n",total);
    system("pause");
    return 0;
}

奔跑的小鸟11 发表于 2020-10-15 22:43:32

风过无痕1989 发表于 2020-10-13 23:42
你的程序共有三个错误,已经帮你修改了,看程序中的注释处

额 能运行了 但是运行后不能读出代码行数

风过无痕1989 发表于 2020-10-15 23:06:06

奔跑的小鸟11 发表于 2020-10-15 22:43
额 能运行了 但是运行后不能读出代码行数

你将第41行 : if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L) 改成下面的语句:

if((handle = _findfirst(strcat(thePath, "/*.cpp"), &fa)) != -1L)

奔跑的小鸟11 发表于 2020-10-16 13:04:53

风过无痕1989 发表于 2020-10-15 23:06
你将第41行 : if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L) 改成下面的语句:

if ...

大佬还是不行

奔跑的小鸟11 发表于 2020-10-16 13:06:44

奔跑的小鸟11 发表于 2020-10-16 13:04
大佬还是不行

显示的是can‘t open the file

风过无痕1989 发表于 2020-10-16 14:42:35

本帖最后由 风过无痕1989 于 2020-10-16 15:10 编辑

奔跑的小鸟11 发表于 2020-10-16 13:06
显示的是can‘t open the file

这是复制我发在 10楼的程序的运行结果

风过无痕1989 发表于 2020-10-16 14:56:18

奔跑的小鸟11 发表于 2020-10-16 13:06
显示的是can‘t open the file

对了,在你的文件包里不能有同名的EXE文件,否则需要运行的程序就有可能打不开

杰出星空 发表于 2020-10-16 15:26:07

提示你有错误,需要改正,比如标点要切换到英文输入。
你仔细对一下小甲鱼的作业就能发现

奔跑的小鸟11 发表于 2020-10-16 20:52:27

风过无痕1989 发表于 2020-10-16 14:56
对了,在你的文件包里不能有同名的EXE文件,否则需要运行的程序就有可能打不开

我这咋又有C 又有C++的啊

风过无痕1989 发表于 2020-10-16 21:01:35

奔跑的小鸟11 发表于 2020-10-16 20:52
我这咋又有C 又有C++的啊

有,没有关系,有关系的是你要运行的那个是C,还是C++

风过无痕1989 发表于 2020-10-16 21:10:32

奔跑的小鸟11 发表于 2020-10-16 20:52
我这咋又有C 又有C++的啊

我这里有 test.c、test.cpp,还有test2.c、test3.c、test4.c,这些是因为回答问题所需要而建立的,它们的存在(只要 test.exe 不存在就行,这里要说明一下, test.exe 并不一定不能存在,但有些时候它的存在就会出问题,所以,遇到文件不能打开,就应想到是它的存在,删除后再重新启动 DEV运行,就不会存在打不开的情况发生了),并不影响 test.c ( 或 test.cpp )的运行
页: [1] 2
查看完整版本: DEV C++ 中运行程序错误后 某行代码被红色条框起来是什么意思