lzcibe 发表于 2024-9-14 11:08:15

C语言第一个课后作业中遇到的问题

首先
第一个问题是,当所有代码敲完的时候,程序并没有显示报错,但是当我执行时,他会弹出这样的提示

'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details.
(不止一个,他有7个错误都是这种类型,叫我考虑在后面加_s)

接着,我又试着按他说的做,加上_s后,他又开始报错,说“调用函数中的参数太少”

不知道有没有大佬知道是什么问题,感谢回答

另一个问题是
#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);
这段代码中的 findALLFiles 这里下面会出现绿色波浪线,说未能找到这个的函数定义,我不知道这个会不会影响程序的运行
(另外,我用的编译器是Visual Studio 2022, 所有的文本应该也没有抄错)



FishC 发表于 2024-9-14 11:27:36

第一个问题涉及到“fopen”函数的安全性警告。Visual Studio建议使用更安全的“fopen_s”函数。你可以按如下步骤进行修改:

1. **将 `fopen` 替换为 `fopen_s`**:
    FILE *file;
    errno_t err = fopen_s(&file, "filename.txt", "r");
    if (err != 0) {
      // 处理打开文件失败的情况
      printf("Failed to open file\n");
      return;
    }
    // 继续处理文件逻辑

2. **如果不想修改代码,也可以禁用安全警告**:
    在文件开头加入这样的预处理指令:
    #define _CRT_SECURE_NO_WARNINGS
    需要在所有包含头文件之前放置这行代码。

第二个问题有关未定义函数的警告。`findALLFiles`函数只声明了,没有定义,因此会出现警告。要解决这个问题,需要给这个函数添加定义。例如:

void findALLFiles(const char* path) {
    // 在这里添加函数的具体实现
}

如果函数并未使用或计划在后续补上实现而需要暂时忽略这个警告,可以忽略它对程序的即时运行影响,但为了保持代码的完整性还是建议尽早补全定义。

总结:
- 使用 `fopen_s` 替换 `fopen` 或通过预处理指令禁用警告;
- 给`findALLFiles`函数添加具体实现以消除警告。

希望这些信息能帮到你!如果有其他问题,随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-9-14 15:24:57

在源代码第1行前添加这一句:
#define _CRT_SECURE_NO_WARNINGS

某一个“天” 发表于 2024-9-14 19:10:00

球最佳~
VS 的经典错误,不要听他建议。
在源代码第1行前添加这一句:
#define _CRT_SECURE_NO_WARNINGS

sfqxx 发表于 2024-9-15 09:54:32

#define _CRT_SECURE_NO_WARNINGS
代码没问题就用上面这个代码,这个代码用于告诉 Microsoft Visual C++ 编译器忽略 C 运行时库函数的一些安全性改进的警告。
页: [1]
查看完整版本: C语言第一个课后作业中遇到的问题