751343837 发表于 2023-9-3 21:09:33

请问一下c第一节课的作业,抄写c源代码,18和22行代码为什么会报错


#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdio.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)
      {

isdkz 发表于 2023-9-3 21:09:52

在给定的代码中,第18行和第22行的代码会导致错误。

首先,让我们看看第18行的代码:
if((fp = fopen(filename, "r") == NULL)

这行代码的目的是打开一个文件并将其赋值给指针 fp 。然而,这里存在一个语法错误。在这行代码中, fopen 函数的调用应该在括号内完成,然后将结果与 NULL 进行比较。正确的写法应该是:
if((fp = fopen(filename, "r")) == NULL)


接下来,让我们看看第22行的代码:
void findAllCodes(const char *path)

这行代码定义了一个名为 findAllCodes 的函数,它接受一个 const char * 类型的参数 path 。然而,在这个代码段中,函数的实现部分被省略了。如果你希望这个代码能够成功编译,你需要在之后的代码中提供函数 findAllCodes 的实现。

综上所述,要解决这些错误,你需要做两件事:
1. 在第18行的代码中,将 fopen 函数的调用与 NULL 进行比较的括号放在正确的位置。
2. 在代码中提供 findAllCodes 函数的实现。

751343837 发表于 2023-9-4 21:54:15

isdkz 发表于 2023-9-3 21:09
在给定的代码中,第18行和第22行的代码会导致错误。

首先,让我们看看第18行的代码:


谢谢回复,不过代码上没有左边的代码行数字,不是那两行的问题,是别的,
1.
2.#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdio.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)
{
18.       FILE *fp;
      int count = 0;
      int temp;
      
      if((fp = fopen(filename, "r") == NULL)
23.      {
                fprintf(stderr, "Ccan not open the file: %s\n", filename);
                return 0;
      }

751343837 发表于 2023-9-4 21:57:38

isdkz 发表于 2023-9-3 21:09
在给定的代码中,第18行和第22行的代码会导致错误。

首先,让我们看看第18行的代码:


22行那个最后是不是少了;

751343837 发表于 2023-9-4 21:59:24

751343837 发表于 2023-9-4 21:54
谢谢回复,不过代码上没有左边的代码行数字,不是那两行的问题,是别的,
1.
2.#include


可能上面答者回复的也是对的,编辑器上那两句没有错误
页: [1]
查看完整版本: 请问一下c第一节课的作业,抄写c源代码,18和22行代码为什么会报错