gpt4 book ai didi

c - gets_s 错误 C2660 "function does not take 1 argument"- 非常困惑

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:25 26 4
gpt4 key购买 nike

所以我已经尽可能彻底地研究了这个问题,但是我一直无法确定解决方案(对编程非常陌生)。

基本上我正在尝试读取 .txt 文件,但是当我要求用户使用 get_s 函数输入文件名时,我收到错误 C2660 - “error C2660: 'gets_s': function does不带 1 个参数"。

这是我的代码示例:

#define _CRT_SECURE_NO_WARNINGS

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


void main()
{
FILE *fileread1;
char file1[10];
char read_char1;
char ch;
{

printf("Enter a filename : ");
gets_s("file1.txt");

fileread1 = fopen("file1.txt", "r");

感谢所有看过的人,我知道这个问题可能非常明显,但我对编程还很陌生。非常感谢!

最佳答案

gets_s 接受两个参数,而不是一个。这是一个引用:http://en.cppreference.com/w/c/io/gets .

您不应该使用此函数。相反,您应该使用 fgets。据我了解,getsgets_s 都不能防止缓冲区溢出。

要像使用 gets 一样使用 fgets,只需将 stdin 作为输入文件指针传递即可。这是一个用法示例:

char buffer[100];
fgets(buffer, 100, stdin);

这里有一个关于 fgets 的好资源,里面有更多的细节:https://www.freebsd.org/cgi/man.cgi?query=fgets&sektion=3

更正

经过一些研究,gets_s 似乎是 gets 的一个版本,可以防止缓冲区溢出,但是我在 stdio.h< 中找不到它 在我的 OSX 机器上或在我的 FreeBSD 服务器上。它似乎不是标准的,所以我建议使用 fgets

关于c - gets_s 错误 C2660 "function does not take 1 argument"- 非常困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com