使用C编程创建文件并将其保存为当前登录的username.txt
我想用C创建一个文件,并将其保存为当前登录的“username”.txt 例如:如果当前用户是bob,则在运行程序时会在“c:\users\bob\MAP\”目录下创建一个名为“bob.txt”的文件 下面的代码将data.txt文件保存在“c:\users\bob\MAP\”目录下。但是,我想将保存的文件设置为“bob.txt”,因为他是执行程序的当前登录用户使用C编程创建文件并将其保存为当前登录的username.txt,c,fopen,C,Fopen,我想用C创建一个文件,并将其保存为当前登录的“username”.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); ExpandEnviron
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”
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+");
提前感谢只需使用已复制到
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"
// ...
可能是从
oBuffer
中提取的?在第一个strcat()
oBuffer
以“\\USERNAME”
结尾之前,是否有任何引用,因为我不理解它。谢谢这正是我想要的。谢谢pmgMind you:如果用户目录不是“C:\users\”(我相信某些Windows安装使用不同的目录),那么这将不起作用。还要注意空格和其他“奇怪”的字符。这是真的。如果windows安装在除c以外的另一个驱动器上,您认为哪种方法可行吗:\