| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 JeremyPan7 于 2020-11-10 23:05 编辑  
 
求问!学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[MAX],target[MAX];
 
 -         
 
 -         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[MAX];
 
 -         
 
 -         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[MAX]=".";
 
 -         
 
 -         printf("计算[size=6][/size]中。。。\n");
 
 -         
 
 -         findAllCodes(path);
 
 -         findAllDirs(path);
 
 -         
 
 -         printf("目前你总共写了 %ld 行代码!\n\n",total);
 
 -         system("pause");
 
 -         
 
 -         return 0;
 
 -         
 
 - }
 
  复制代码 
 
 
 
编译报错如下 
43        2        D:\FishC\S1E2\AfterClass.c        [Error] unknown type name 'struct_finddata_t' 
48        50        D:\FishC\S1E2\AfterClass.c        [Warning] passing argument 2 of '_findfirst64i32' from incompatible pointer type 
2        0        D:\FishC\S1E2\AfterClass.c        In file included from D:\FishC\S1E2\AfterClass.c 
220        20        C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\io.h        [Note] expected 'struct _finddata64i32_t *' but argument is of type 'int *' 
52        38        D:\FishC\S1E2\AfterClass.c        [Error] request for member 'name' in something not a structure or union 
54        29        D:\FishC\S1E2\AfterClass.c        [Warning] passing argument 2 of '_findnext64i32' from incompatible pointer type 
2        0        D:\FishC\S1E2\AfterClass.c        In file included from D:\FishC\S1E2\AfterClass.c 
241        15        C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\io.h        [Note] expected 'struct _finddata64i32_t *' but argument is of type 'int *' 
 
第42行的位置加个空格 
- #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[MAX], target[MAX];
 
  
-         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[MAX];
 
  
-         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[MAX] = ".";
 
  
-         printf("计算[size=6][/size]中。。。\n");
 
  
-         findAllCodes(path);
 
 -         findAllDirs(path);
 
  
-         printf("目前你总共写了 %ld 行代码!\n\n", total);
 
 -         system("pause");
 
  
-         return 0;
 
  
- }
 
 
  复制代码 
 
 
 |   
 
 
 
 |