Создайте файл и сохраните его как текущий, вошедший в username.txt с использованием C-программирования - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу создать файл с C и сохранить его как текущий, вошедший в систему под именем пользователя .txt

Например: , если текущий пользователь - bob, когда он запускаетзапрограммируйте создание файла с именем "bob.txt" в каталоге "c: \ users \ bob \ MAP \"

Приведенный ниже код сохраняет файл data.txt в папке "c: \ users \ bob \"КАРТА \ "каталог. Однако я хочу сделать сохраненный файл как "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 "создать при выполнении программы.

Заранее спасибо

1 Ответ

0 голосов
/ 02 ноября 2019

просто используйте имя, уже скопированное в 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"
// ...
...