大家好,我是新学C语言的小白,目前刚接触带你学C带你飞的课程。
我是C语言初学,问一下,这个计算代码量的程序写完也运行了。但是结果却是0,是哪里出了问题?存储路径有问题吗? 你是在说单口相声吗?上代码呀!代码不要贴成图片,更简单的方法是贴到代码框里。试试快捷工具栏里标有 "<>" 的按钮。 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;
}
#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;
} jackz007 发表于 2019-8-10 15:03
你是在说单口相声吗?上代码呀!
代码不要贴成图片,更简单的方法是贴到代码框里。试试快捷工具 ...
代码我都是照着抄的,没报错运行了,结果显示0 - - ,醉了 楼主再抄这个代码看看呢:
#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) ;
}
}
大佬商量个事行不加个微信一起学 主要是我想时不时借一下你的号给钱也行 我晚上用也行 我也是跟楼主遇到同样的问题,请问哪位大佬知道怎么回事?! buddy85 发表于 2019-8-10 21:13
我也是跟楼主遇到同样的问题,请问哪位大佬知道怎么回事?!
很奇怪,我代码重抄了一遍又好了。关键没报错运行了,检查了好几遍代码也没抄错- - ,打算学到后面再回头来看看啥问题。{:5_99:} 辉煌耀世 发表于 2019-8-10 15:43
大佬商量个事行不加个微信一起学 主要是我想时不时借一下你的号给钱也行 我晚上用也行
{:5_109:}我这号也是跟同学两个人买的。AA jackz007 发表于 2019-8-10 15:21
楼主再抄这个代码看看呢:
辛苦辛苦,我主要是想知道我原来代码错在哪里- -,谢谢你啊。 King.c 发表于 2019-8-10 21:22
很奇怪,我代码重抄了一遍又好了。关键没报错运行了,检查了好几遍代码也没抄错- - ,打算学到后面再回头 ...
你在吗? buddy85 发表于 2019-8-10 21:35
你在吗?
在线的, 楼主,你看下你的编译器保存的C文件后缀名是不是“.c”文件。如果不是,注意代码if((handle = _findfirst(strcat(thePath,"/.c"),&fa))!= -1L),把“.c”改一下,改成你保存的文件后缀名。比如C++的“.cpp”格式。你可以这样试一下。 King.c 发表于 2019-8-10 22:08
在线的,
在吗,能加个微信或者QQ吗? King.c 发表于 2019-8-10 15:13
可以实验一下,既然你写的代码运行结果为零,那把小甲鱼的代码复制粘贴在运行,看看结果是什么。要是结果.还是零,那可能是IDE的原因了。之后就建议百度 了 主楼我想问一下第六页的这个第一个程序这章的开发工具 code blocks和Dev-c++是在哪下载的 书上的网址没有 黄皮耗子 发表于 2019-8-21 05:48
主楼我想问一下第六页的这个第一个程序这章的开发工具 code blocks和Dev-c++是在哪下载的 书上的网址没有
这两个IDE可以在“论坛” → “《带你学C带你飞》【第一季】”→扩展阅读里面有,自己找下
需要弄百度网盘哦!里面有链接你点击保存,然后在下载。
温馨提示:百度网盘限速,建议使用PanDownload上网下载,注:先要保存要下的文件,或你可以提取链接
页:
[1]