wang13426564043 发表于 2020-9-20 12:20:16

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

#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 = ".";
       
        printf("计算中...\n");
       
        findALLdirs(path);
       
        printf("目前你一共写了 %1d 行代码!\n\n",total);
       
        return
}

谢谢你的帮助!!!

sunrise085 发表于 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"))

baige 发表于 2020-9-20 16:12:21

错误有很多,推荐楼主自己再认真的敲一遍

风过无痕1989 发表于 2020-9-20 16:54:30

原题5个头函数,你弄出6个来:

#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

baige 发表于 2020-9-20 17:52:27

风过无痕1989 发表于 2020-9-20 16:54
原题5个头函数,你弄出6个来:

#include


Linux或MacOS

wang13426564043 发表于 2020-9-20 21:19:51

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

谢谢~

乐乐学编程 发表于 2020-9-23 22:12:41

2楼 sunrise085 大师的回复,我是信得过的(看过他很多的回复),相信我,选他最佳答案,是没有错的
页: [1]
查看完整版本: 《带你学C带你飞》(课后作业)不知道哪里错了