gpt4 book ai didi

c - 为什么提示给我 "Access denied"?

转载 作者:行者123 更新时间:2023-11-30 17:19:13 26 4
gpt4 key购买 nike

我执行此 C 代码,该代码使用 system() 调用 dir 命令,但将写入屏幕的所有字母更改为小写。

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

#define MAXSTRING 100

int main(void){
char command[MAXSTRING], *tmp_filename;
int c;
FILE *ifp;

tmp_filename = tmpnam(NULL);
sprintf(command, "dir > %s", tmp_filename);
system(command);
ifp = fopen(tmp_filename, "r");
while ((c = getc(ifp)) != EOF)
putchar(tolower(c));
remove(tmp_filename);
return 0;
}

我尝试在 Linux 上用“ls”更改“dir”来执行代码,并且 100% 工作。为什么使用 Visual Studio 时我收到“访问被拒绝”的消息?谢谢。

最佳答案

MSVC 库中的

tmpnam 生成 \name 格式的名称。这意味着如果您直接使用该名称,您将尝试将某些内容写入当前驱动器的根目录中。显然您的帐户无权执行此操作,这就是为什么您会收到来自 dir 的“访问被拒绝”响应。

tmpnam 保证该名称对于当前工作目录是唯一的,这意味着您应该确保该文件是在当前工作目录中创建的(而不是在根目录中)驱动器)。您应该添加名称的完整路径,或者删除前面的 \ 。 IE。做一些类似的事情

tmp_filename = tmpnam(NULL);

// Assuming `tmp_filename` is not null
if (*tmp_filename == '\\')
++tmp_filename;

关于c - 为什么提示给我 "Access denied"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929778/

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