我正在尝试使用const char *指针将argv [i]初始化为“C:\ Games \ World_of_Tanks \ res \ packages \ gui.pkg”的值。我可以在编程方面获得一些帮助。
#include <windows.h>
#include <cstdio>
void pf(const char* name)
{
HANDLE file = CreateFile(name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(file == INVALID_HANDLE_VALUE) { printf("couldn't open %s\n", name); return; };
unsigned int len = GetFileSize(file, 0);
HANDLE mapping = CreateFileMapping(file, 0, PAGE_READONLY, 0, 0, 0);
if(mapping == 0) { printf("couldn't map %s\n", name); return; }
const char* data = (const char*) MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0);
if(data)
{
printf("prefetching %s... ", name);
// need volatile or need to use result - compiler will otherwise optimize out whole loop
volatile unsigned int touch = 0;
for(unsigned int i = 0; i < len; i += 4096)
touch += data[i];
}
else
printf("couldn't create view of %s\n", name);
UnmapViewOfFile(data);
CloseHandle(mapping);
CloseHandle(file);
}
int main(int argc, const char** argv)
{
if(argc >= 2) for(int i = 1; argv[i]; ++i) pf(argv[i]);
return 0;
}
答案 0 :(得分:2)
无法更改const char
的值。你想做什么?
如果要设置main函数中argv数组的值,则需要使用命令行参数执行程序,如:
program argument argument etc
从评论信息编辑:
如果您想在程序启动时运行pf
功能,可以添加
pf("C:\Games\World_of_Tanks\res\packages\gui.pkg"); // this might need to be escaped...
在主要功能中。
答案 1 :(得分:0)
你可以使用另一个数组
const char *myargv[] = { "pgmname",
"my_first_filename.dat",
"my_second_filename.dat",
NULL };
argv = myargv;
argc = 3;
如果只是为了能够从IDE注释运行程序,那么确实有一个GUI选项来设置程序的命令行参数。