鱼C论坛

 找回密码
 立即注册
查看: 1995|回复: 27

[已解决]课后作业1,请问为什么结果不一样

[复制链接]
发表于 2020-1-5 17:06:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚开始我MAX打错了,开头那里,打少一个字母,运行失败,然后我补上了再点击运行编译。结果显示我打了7行代码,我在想是不是不对,然后把文件删除了重新另存为保存下来。这次结果就是102行代码,可是小甲鱼老师他的答案不是101行吗,是我哪里打错了吗,我一行一行抄下来的呀,求助,求大佬解答
最佳答案
2020-1-5 17:22:20
丶啊液隔离街 发表于 2020-1-5 17:19
大佬,发出来了,是不是我写错了啥啊,一直没开输入法打字呀

代码没有问题,可能是你打代码时多打了一个空行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-5 17:07:33 | 显示全部楼层
把代码发上来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:17:27 | 显示全部楼层

#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("&#188;&#198;&#203;&#227;&#214;D...\n");
       
            findAllCodes(path);
            findALLDirs(path);
       
            printf("&#196;&#191;&#199;°&#196;&#227;×ü12D′á&#203; %ld DD′ú&#194;&#235;! \n\n", total);
            system("pause");
       
            return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:18:22 | 显示全部楼层
zltzlt 发表于 2020-1-5 17:07
把代码发上来。

大佬,怎么发啊...我直接复制粘贴发下面了可以吗,图片这些都要链接,不知道怎么发..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:19:07 | 显示全部楼层

  1. #include <io.h>
  2. #include <direct.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>

  6. #define MAX        256

  7. long total;

  8. int countLines(const char *filename);
  9. void findAllCodes(const char *path);
  10. void findALLFiles(const char *path);

  11. int countLines(const char *filename)
  12. {
  13.             FILE *fp;
  14.             int count = 0;
  15.             int temp;
  16.        
  17.             if((fp = fopen(filename,"r")) == NULL)
  18.             {
  19.                        fprintf(stderr,"Can not open the file:%s\n", filename);
  20.                        return 0;
  21.             }
  22.        
  23.             while((temp = fgetc(fp)) != EOF)
  24.             {
  25.                        if(temp == '\n')
  26.                        {
  27.                                   count++;
  28.                        }
  29.             }
  30.        
  31.             fclose(fp);
  32.        
  33.             return count;
  34. }

  35. void findAllCodes(const char *path)
  36. {
  37.             struct _finddata_t fa;
  38.             long handle;
  39.             char thePath[MAX], target[MAX];
  40.        
  41.             strcpy(thePath, path);
  42.             if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L)
  43.             {
  44.                         do
  45.                         {
  46.                                     sprintf(target, "%s/%s", path, fa.name);
  47.                                     total = countLines(target);
  48.                                 }while (_findnext(handle, &fa) == 0);
  49.             }
  50.        
  51.             _findclose(handle);
  52. }

  53. void findALLDirs(const char *path)
  54. {
  55.             struct _finddata_t fa;
  56.         long handle;
  57.             char thePath[MAX];
  58.        
  59.             strcpy(thePath, path);
  60.             if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)
  61.             {
  62.                         fprintf(stderr, "The path %s is wrong!\n",path);
  63.                         return;
  64.             }
  65.        
  66.             do
  67.             {
  68.                         if(!strcmp(fa.name, ".") || !strcmp(fa.name, ".."))
  69.                                continue;
  70.                        
  71.                         if( fa.attrib == _A_SUBDIR)
  72.                         {
  73.                                     sprintf(thePath, "%s/%s", path, fa.name);
  74.                                     findAllCodes(thePath);
  75.                                     findALLDirs(thePath);
  76.                         }
  77.             }while (_findnext(handle, &fa) == 0);
  78.        
  79.             _findclose(handle);
  80. }

  81. int main()
  82. {
  83.             char path[MAX] = ".";
  84.        
  85.             printf("&#188;&#198;&#203;&#227;&#214;D...\n");
  86.        
  87.             findAllCodes(path);
  88.             findALLDirs(path);
  89.        
  90.             printf("&#196;&#191;&#199;°&#196;&#227;×ü12D′á&#203; %ld DD′ú&#194;&#235;! \n\n", total);
  91.             system("pause");
  92.        
  93.             return 0;
  94. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:19:49 | 显示全部楼层
zltzlt 发表于 2020-1-5 17:07
把代码发上来。

大佬,发出来了,是不是我写错了啥啊,一直没开输入法打字呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:22:20 | 显示全部楼层    本楼为最佳答案   
丶啊液隔离街 发表于 2020-1-5 17:19
大佬,发出来了,是不是我写错了啥啊,一直没开输入法打字呀

代码没有问题,可能是你打代码时多打了一个空行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:26:06 | 显示全部楼层

102行,没问题,你说对吧?

别忘了这个程序是干嘛的,就是统计你写的代码的行数


1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:26:15 | 显示全部楼层
zltzlt 发表于 2020-1-5 17:22
代码没有问题,可能是你打代码时多打了一个空行。

就是我打多了一个空格也算多打了一行代码吗,感谢,因为前面代码7的故障不知道怎么出来的,我就删文件重新点编译了,期间我以为就是空格跟小甲鱼老师的不一样,就是有些地方要空出来很多是不是不用的呀,有些不一样的地方都是手动在前面点空格到跟小甲鱼老师的上一行一样的位置可能有个地方打多了,没问题就行了,感谢大佬我爱你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:28:31 | 显示全部楼层
丶啊液隔离街 发表于 2020-1-5 17:26
就是我打多了一个空格也算多打了一行代码吗,感谢,因为前面代码7的故障不知道怎么出来的,我就删文件重 ...

多一个空格不算一行,多一个回车才算一行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:29:31 | 显示全部楼层
多几个空格也不算一行,只有多一个回车才算一行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:32:20 | 显示全部楼层
人造人 发表于 2020-1-5 17:26
102行,没问题,你说对吧?

别忘了这个程序是干嘛的,就是统计你写的代码的行数

这样啊,明白了,那就是不用跟小甲鱼老师那样搞准确的空格位置是吧。可是小甲鱼老师的代码那里也是102行呀,为啥他的是101,这个想不明白。也没敲多空格吧..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:33:37 | 显示全部楼层
人造人 发表于 2020-1-5 17:29
多几个空格也不算一行,只有多一个回车才算一行

打了半天没打错挺开心啦,不管他了,就是说不明白为啥小甲鱼老师的是101,他的代码也是102呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 17:34:40 | 显示全部楼层
人造人 发表于 2020-1-5 17:29
多几个空格也不算一行,只有多一个回车才算一行

谢谢大佬们回复我啦哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:44:30 | 显示全部楼层
丶啊液隔离街 发表于 2020-1-5 17:33
打了半天没打错挺开心啦,不管他了,就是说不明白为啥小甲鱼老师的是101,他的代码也是102呀

1.png




告诉我这是几行? 9行?不,这是5行
自动换行,我认为很可能是这个原因,如果你能保证你没有数错的话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:45:35 | 显示全部楼层
计算机认为这是5行,只是让你看起来像9行
这就是自动换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 18:18:12 | 显示全部楼层
人造人 发表于 2020-1-5 17:45
计算机认为这是5行,只是让你看起来像9行
这就是自动换行

大佬,我检查了很久,然后实在找不到哪里出问题了,我去小甲鱼老师那直接复制代码过去,居然显示313行代码,不知道什么情况,先继续学着吧,估计是不能复制粘贴?不清楚...我用的Dev-c++这个软件。之前那个7行代码的也是无论怎么搞都不行,吧原文件删除了重新搞又变成102。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 18:20:10 | 显示全部楼层
丶啊液隔离街 发表于 2020-1-5 18:18
大佬,我检查了很久,然后实在找不到哪里出问题了,我去小甲鱼老师那直接复制代码过去,居然显示313行代 ...

那个程序统计的是当前目录(包括子目录)下所有 .c文件的行数总和
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-5 18:23:52 | 显示全部楼层
人造人 发表于 2020-1-5 18:20
那个程序统计的是当前目录(包括子目录)下所有 .c文件的行数总和

大佬我懂了,可是我搞了另一个文件夹也显示102,直接复制的小甲鱼老师的,不知道咋回事了...反正没打错就好啦,我感觉没错呀,直接复制也是102,不知道是不是小甲鱼老师弄答案的时候弄多了一行或者少一行,还是我这个软件有bug,或者我的文件夹有啥问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-5 18:35:11 | 显示全部楼层
丶啊液隔离街 发表于 2020-1-5 18:23
大佬我懂了,可是我搞了另一个文件夹也显示102,直接复制的小甲鱼老师的,不知道咋回事了...反正没打错就 ...

嗯,我看了一下,是小甲鱼老师的那个图片不符合代码行数

图片上的是106和101,代码行数是105和102
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 02:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表