木Muk 发表于 2017-9-6 18:54:08

SLE2课后作业代码疑问

系统:Linux deepin

问题描述:
昨天我用VI敲了一次代码,然后出现了多错误无法编译,后来不小心删掉了。
今天我用ATOM抄了一次代码,结果出现其中一个错误
“assignment makes pointer from integer without a cast ”

顺便附上写出来的代码

木Muk 发表于 2017-9-6 19:44:28

#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(const 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)) != EOF)
{
    if (temp == '\n')
    {
      count++;
    }
}

fclose(fp);

return count;
}

int isCode(const char *filename )
{
int length;

length = strlen(filename);

if (!strcmp(filename + (length - 2),".c"))
{
    return 1;
}
else
{
    return 0;
}
}

void findAllDirs(const char *path)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;

if (dp = opendir(path ) == NULL)
{
    fprintf(stderr, "The path %s is wrong\n",path );
    return;
}

chdir(path);
while ((entry = readdir(dp)) != NULL)
{
    lstat(entry->d_name,&statbuf);

    if (!strcmp(".",entry->d_name) || !strcmp("..",entry->d_name))
      continue;

    if (S_ISDIR(statbuf.st_mode))
    {
      findAllDirs(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("目前你总共写了 %ld 行代码! \n\n",total);

return 0;
}

木Muk 发表于 2017-9-6 19:51:22

本帖最后由 木Muk 于 2017-9-6 20:01 编辑

我还是没有搞懂原来代码的问题,上边换行的问题是ATOM的问题,但是复制小甲鱼原来代码运行成功……{:10_266:}{:10_266:}{:10_266:}依旧不知道自己错在哪儿,再来一次,为什么代码是210行?

木Muk 发表于 2017-9-6 19:54:05

本帖最后由 木Muk 于 2017-9-6 20:00 编辑

好吧,出错在63行,少了一个括号,可是为什么运行结果是210行?小甲鱼原来代码是106行?

木Muk 发表于 2017-9-7 12:20:13

无人理会好恐怖……{:10_266:}{:10_266:}{:10_266:}
页: [1]
查看完整版本: SLE2课后作业代码疑问