Я застрял, нужно добавить значение указателя char в значение списка char. Значение указателя char включает имя пользователя (машина с Windows), а значение списка char включает путь запуска. Я попытался выполнить strcat, но первый ";" сломался. часть.

#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


int main(void)
{
    char *username = getenv("USERNAME");
    //printf("%s\n", username);  

    char shortcutpath[100] = "C:\\Users\\";"\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";  //2 ; is weird, i just tried

    strcat(shortcutpath, username);
    printf("%s\n",shortcutpath);
    return 0;
}

Вывод = C: \ Users% username%, необходимо продолжить

Необходимо присвоить переменной "C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup" этот путь

Есть какой-нибудь простой способ сделать это? Или еще что-нибудь полезное?

c
0
Mehmetcan Topal 26 Ноя 2021 в 12:15
1
Что означает эта строка "C: \ Users \"; "\ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup"; значит где есть строка со встроенными кавычками ?!
 – 
Vlad from Moscow
26 Ноя 2021 в 12:21
На самом деле путь - это «C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup». ";" пытается добавить переменную имени пользователя с помощью strcat (). Я попытался добавить переменную имени пользователя в путь
 – 
Mehmetcan Topal
26 Ноя 2021 в 12:24
Сообщите нам, какой результат вы ожидаете
 – 
Jabberwocky
26 Ноя 2021 в 12:30
1
Что ж, точка с запятой - это ерунда, поскольку она завершает выражение. И тогда весь конечный строковый литерал будет просто отброшен как пустой оператор. Здесь хороший компилятор выдаст предупреждение.
 – 
Lundin
26 Ноя 2021 в 12:31
Во-первых, я хочу получить имя устройства и перейти к пути запуска этого пользователя. Мне нужно перейти в "C: \\ Users \\% username% \\ AppData \\ Roaming \\ Microsoft \\ Windows \\ Start Menu \\ Programs \\ Startup" по этому пути, но я не смог добавить переменную% username%
 – 
Mehmetcan Topal
26 Ноя 2021 в 12:37

2 ответа

Лучший ответ

Вы, наверное, захотите этого:

#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
  char* username = getenv("USERNAME");
  char shortcutpath[100] = "C:\\Users\\"; 
  strcat(shortcutpath, username);
  strcat(shortcutpath, "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");

  printf("%s\n", shortcutpath);
  return 0;
}

Но более правильным способом, вероятно, было бы получить непосредственно переменную окружения APPDATA:

int main(void)
  {
    char shortcutpath[100];
    char* appdata = getenv("APPDATA");  // C:\Users\<yourusername>\AppData\Roaming
    strcpy(shortcutpath, appdata);
    strcat(shortcutpath, "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");
    ...
1
Jabberwocky 26 Ноя 2021 в 13:06
Да, это сработало, я на самом деле ищу короткий и простой способ (всего 1 строка). Также пытался python sytnax, например, variable = "string" + "string2" + "string3". В C я думаю, нам нужно добавлять по одному, понял.
 – 
Mehmetcan Topal
26 Ноя 2021 в 13:09
В C нет реального строкового типа, поэтому "string" + "string2" не будет работать.
 – 
Jabberwocky
26 Ноя 2021 в 13:15
char shortcutpath[255] = "C:\\Users\\";
strcat(shortcutpath, username);
strcat(shortcutpath, "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");
1
Lundin 26 Ноя 2021 в 12:58