我正在尝试使用 c 创建/打开文件。我使用 fgets 命令输入名称,所以我不能溢出缓冲区,如下所示:
void main() {
printf("Enter file name: ");
char * fileName = (char *) calloc(MAX_BUFFER_SIZE, sizeof(char));
fgets(fileName, MAX_BUFFER_SIZE, stdin);
FILE *inputFile = fopen(fileName, "w");
if(inputFile==NULL) perror(fileName);
}
使用调试器,我可以看到我为文件名输入的值是我希望的值,但是 fopen 函数返回 NULL 指针并且我得到“无效参数”错误。如果我改用scanf("%s", fileName)
没有问题并且文件已创建,但这样我可能会溢出缓冲区。任何想法为什么第一个示例不起作用?提前致谢 :)