我在C语言的作业1中完成代码检测行数后显示我打的代码数是0(但我还是打了挺多的代...
就是这个代码#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
心态炸了- -、 {:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}我顶
我在顶一下(主要是怕帖子沉了{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:})
很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行,把"/*.c" 改为 "/*.cpp" 试一下? sunrise085 发表于 2020-10-12 10:46
很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行, ...
不好意思之前面试去了 所以第一时间没有看到 现在才给你回信 。我刚刚照你的试了一下改成了cpp 可输出是还是0行。。。大佬怎么办 {:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}好无奈啊 初学者看不懂这个代码 只能求助大佬了 你用什么编译器?我用DEV_C++ 输出正常,101行 风过无痕1989 发表于 2020-10-12 22:32
你用什么编译器?我用DEV_C++ 输出正常,101行
刚刚有了 我也是DEV-C++ sunrise085 发表于 2020-10-12 10:46
很大可能是因为你的程序都是.cpp文件,而你的这个程序检测的是.c文件
在findAllCodes函数汇总的if那一行, ...
可以了谢谢大佬 听说这故事很美 发表于 2020-10-12 23:11
可以了谢谢大佬
可以了,就选一个最佳答案,算是对回答你问题的报答。如若不然,你下次提问,不一定会有人愿意回答了 听说这故事很美 发表于 2020-10-12 22:18
不好意思之前面试去了 所以第一时间没有看到 现在才给你回信 。我刚刚照你的试了一下改成了cpp 可输出 ...
你没有明白他的意思。你用 DEV_C++, 那么在编译时,会让你保存一个文件名,如果保存时没有修改后缀,系统默认的就是 C++ 程序(后缀是 .cpp),如果你修改了保存时的后缀为 .c,那么就是C程序。
本题目是既可以在C程序运行,也可以在C++程序运行,就看你的文件后缀是 .c 还是 .cpp。
如果是 .c, if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L) 就不用修改
如果是 .cpp ,这一句就修改为:if((handle = _findfirst(strcat(thePath, "/*.cpp"), &fa)) != -1L)
故事很美,人也得做得漂亮 乐乐学编程 发表于 2020-10-13 16:36
故事很美,人也得做得漂亮
好的,没怎么逛过贴吧,所以不是很懂不好意思 风过无痕1989 发表于 2020-10-12 23:48
你没有明白他的意思。你用 DEV_C++, 那么在编译时,会让你保存一个文件名,如果保存时没有修改后缀,系 ...
收到,谢谢(一天都在上课所以只有晚上才有时间看帖子) 1111
页:
[1]