使用C程序创建文件并将其保存为当前登录的username.txt文件

问题描述 投票:0回答:1

我想用C创建文件并将其另存为当前登录的“用户名” .txt

例如:如果当前用户是bob,则在运行程序时会在“ c:\ users \ bob \ MAP \”目录下创建一个名为“ bob.txt”的文件

我下面的代码将文件data.txt保存在“ c:\ users \ bob \ MAP \”目录下。但是,鉴于他是执行该程序的当前登录用户,我想将保存的文件制成“ bob.txt”。

char oBuffer[MAX_PATH];
memset(oBuffer, 0, MAX_PATH);
ExpandEnvironmentStrings("%userprofile%", oBuffer, MAX_PATH);
strcat(oBuffer, "\\MAP\\");
CreateDirectoryA(oBuffer, 0);
strcat(oBuffer, "data.dat");
strcpy(LOG_PATH, oBuffer); 

logfile = fopen(("%s.dat", getenv("USERPROFILE")), "a+");

我希望在程序执行时创建“ c:\ users \ bob \ MAP \ bob.txt”。

提前感谢

c fopen
1个回答
0
投票

仅使用已经复制到oBuffer的名称

// ... UNTESTED CODE
ExpandEnvironmentStrings("%userprofile%", oBuffer, MAX_PATH);
// assume "C:\Users\username"
//         0123456789 username starts at position 9
int userpos = 9; // TODO: better user strrchr()
int uplen = strlen(oBuffer); // username ends at the end of the string
strcat(oBuffer, "\\MAP\\"); // oBuffer now has "C:\Users\username\MAP\"
CreateDirectoryA(oBuffer, 0);
//strcat(oBuffer, "data.dat");
sprintf(oBuffer, "%s%.*s.txt", oBuffer, uplen - userpos, oBuffer + userpos);
// oBuffer now has "C:\Users\username\MAP\username.txt"
// ...
© www.soinside.com 2019 - 2024. All rights reserved.