鱼C论坛

 找回密码
 立即注册
查看: 1117|回复: 6

[已解决]《带你学C带你飞》(课后作业)不知道哪里错了

[复制链接]
发表于 2020-9-20 12:20:16 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
#include<unistd.h>
#include<dirent.h>
#include<string.h>
#include<stdlib.h>
#include<sys/stat.h>

#define MAX 256

long total;

int countLines(const char *filename);
int isCode(char *filename);
void findAllDirs(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)) !=EOP)
        {
                 if(temp == '\n')
                 {
                         count++;
                 }
        }
       
        fclose(fp);
       
        return count;
}

int islCode(const char *filename)
{
        int length;
       
        length = strlen(filename);
       
        if (!strcmp(filename + (length - 2),".c"))
        {
                return 1;
        }
        else
        {
                return 0;
        }
}

void findALLDirs(cont shar *path)
{
        DIR *dp
        struct dirent *entry;
        struct stat statbuf;
       
        if((dp=pendir(path)) == NULL)
        {
                fprintf(stderr"The path %s is wrong!\n",path,);
                return;
        }
       
        chdir(path)
        while((entry = reddir(dp)) !=NULL)
        {
                lstat(entry->d_name,%statbuf);
               
                if(!strcmp(".",entry->d_name) || !strcmp("..",entry->d_name))
                       continue;
                       
                if(S_ISDIR(STATBUF.st_mode))
                {
                                dindALLDirs(entry->d_name)
                }
                else
                {
                                if(isCode(entry->d_name))
                                {
                                                total += countLines(entry->d_name);
                                }
                }
        }
       
        chdir("..");
        closedir(dp)
}

int main()
{
        char path[MAX] = ".";
       
        printf("计算中...\n");
       
        findALLdirs(path);
       
        printf("目前你一共写了 %1d 行代码!\n\n",total);
       
        return
}

谢谢你的帮助!!!
最佳答案
2020-9-20 12:26:40
本帖最后由 sunrise085 于 2020-9-20 12:31 编辑

明显看到的错误就特别多,很多都是语句丢失分号
1、倒数第三行的这个  printf  里面 %ld 你写成%1d了。小写的L,你写成数字1了
2、isCode函数的定义那里,你把 isCode 写成了 islCode
3、main函数最后一行,return 0; 丢了0和分号
4、findALLDirs函数最后一行,丢了分号
……

还有一个可能会出现的问题,不是错误,你先看一下你写的那些程序文件的后缀名是 .c 还是 .cpp
若是 .c 的话,这个程序没问题,能检测到这些文件,
若是 .cpp 的话,那需要将 isCode函数中的if条件改一下
if (!strcmp(filename + (length - 2),".c"))
改为
if (!strcmp(filename + (length - 4),".cpp"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-20 12:26:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-20 12:31 编辑

明显看到的错误就特别多,很多都是语句丢失分号
1、倒数第三行的这个  printf  里面 %ld 你写成%1d了。小写的L,你写成数字1了
2、isCode函数的定义那里,你把 isCode 写成了 islCode
3、main函数最后一行,return 0; 丢了0和分号
4、findALLDirs函数最后一行,丢了分号
……

还有一个可能会出现的问题,不是错误,你先看一下你写的那些程序文件的后缀名是 .c 还是 .cpp
若是 .c 的话,这个程序没问题,能检测到这些文件,
若是 .cpp 的话,那需要将 isCode函数中的if条件改一下
if (!strcmp(filename + (length - 2),".c"))
改为
if (!strcmp(filename + (length - 4),".cpp"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-20 16:12:21 | 显示全部楼层
错误有很多,推荐楼主自己再认真的敲一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-20 16:54:30 | 显示全部楼层
原题5个头函数,你弄出6个来:

#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-20 17:52:27 | 显示全部楼层
风过无痕1989 发表于 2020-9-20 16:54
原题5个头函数,你弄出6个来:

#include

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

使用道具 举报

 楼主| 发表于 2020-9-20 21:19:51 | 显示全部楼层
sunrise085 发表于 2020-9-20 12:26
明显看到的错误就特别多,很多都是语句丢失分号
1、倒数第三行的这个  printf  里面 %ld 你写成%1d了。小 ...

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

使用道具 举报

发表于 2020-9-23 22:12:41 | 显示全部楼层
2楼 sunrise085 大师的回复,我是信得过的(看过他很多的回复),相信我,选他最佳答案,是没有错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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