【问题标题】:Accessing %appdata% with c使用 c 访问 %appdata%
【发布时间】:2014-04-16 14:45:51
【问题描述】:

我想制作一个程序来打开 startup 文件夹中的文本文件。写一些东西到它并关闭它。我可以在我的路径中使用 %APPDATA%,因为用户名在我使用的每台电脑上都会更改,如下所示,但它不起作用。

FILE *fptr
fptr = fopen("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\myfile.txt","w");

【问题讨论】:

  • 顺便说一句,您不应该将数据文件放在“启动”文件夹中。用于在启动时启动程序的快捷方式。
  • @AndrewMedico 但它允许手动复制粘贴数据文件,那么为什么不使用程序

标签: c windows file-io


【解决方案1】:

获取环境变量的常规方式是使用getenv

char * appdata = getenv("APPDATA");
if (!appdata) { /* error */ }
char buffer[0x400];
snprintf(buffer, sizeof(buffer)
    , "%s\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\myfile.txt", appdata);
fptr = fopen(buffer,"w");

请记住,在 Windows 中,环境变量区分大小写。

【讨论】:

  • 它给出链接器错误模块myprogram.c中的未定义符号
  • 链接器是否告诉你哪个符号未定义?
  • 我想您使用的是 Visual Studio。用_snprintf 替换snprintf 应该可以完成这项工作。
  • @MichaelWalz 是的,它告诉 _snprintf
  • @MichaelWalz iam 使用 turbo c
猜你喜欢
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多