Tag: 路径

如何在C上将文件写入非特定用户的桌面?

我写了一个程序,我想让它写一个文件到桌面。 我想出了如何把它写到我的,但我希望它能够去任何人的桌面(窗口)。 有没有办法让路径名称更具动态性,以便它可以在任何人的桌面上运行? 这是一个示例: void add(void) { FILE *fp; fp = fopen(“C:\\Users\\Jones\\Desktop\\test.txt”, “w+”); float num1; float num2; float sum; printf(“Enter first number: “); num1 = getNum(); printf(“Enter second number: “); num2 = getNum(); sum = num1 + num2; printf(“%.1f + %.1f = %.1f\n”, num1, num2, sum); fprintf(fp, “Num1: %.1f\nNum2: %.1f\nSum: %.1f “, num1, num2, sum); […]

如何在C代码中解析带空格的文件夹路径

我正在使用这个简单的C代码: char * command = NULL; sprintf (command, “ls %s”, folderpath); system(command); 问题是文件夹名称中有空格…我知道在Unix中我需要添加一个“\”,例如ls my \ folder \ name 我怎么能绕过这个? 谢谢!

断言宏中的C / C ++完整文件路径

我想知道是否可以使用断言宏显示完整的文件路径? 我无法在编译命令中指定完整文件路径,还有办法吗? 我的调试环境是linux / g ++

C,运行时测试,如果PATH中存在可执行文件

我目前正在用C编写一个应用程序,目标是BSD和Linux系统,希望能够通用。 这个程序是运行时依赖,在本例中是mplayer。 目前我正在使用execlp()来启动mplayer。 我正在检查execlp调用的错误代码,我正在测试EACCESS ,所以我知道当我尝试运行mplayer时它是否存在。 由于我的程序工作方式,mplayer是必需的依赖项,但在我的程序启动后可能不会使用一段时间。 作为用户体验,由于mplayer丢失,程序在失败之前已经运行了一段时间是很差的。 所以我想在我的程序启动时测试mplayer的存在。 如果mplayer不可用,可能会发送错误消息。 现在我知道这里存在竞争条件,因此我当前对EACCESS错误的处理必须保持EACCESS 。 我们可以找到用户启动程序运行的情况,然后卸载mplayer。 这是被接受的。 我最初的想法是在执行的早期调用execlp() ,但这会导致mplayer明显启动。 说实话,我宁愿不要启动mplayer,只是测试我是否“可以”启动它(例如,在我的路径中某个地方存在一个名为mplayer的文件并且它是可执行的)。 然后再考虑运行这些精确步骤,查看路径并测试匹配文件是否可执行。 我还没有对此进行编码有两个原因。 第一个原因,确保execlp是找到我发现的相同的东西,我必须将发现的路径名传递给execlp,绕过内置的PATH搜索机制。 另一个原因就是我觉得我错过了一个明显的伎俩。 是否有我应该用来搜索可执行文件的函数? 或者我真的需要继续进行并对其进行编码。

如何通过提供文件名获得完整路径?

请帮助我没有得到如何使用C / C ++实现返回该文件的完整路径的函数?

C / C ++ – 可执行路径

我想获得当前可执行文件的文件路径,但最后没有可执行文件名。 我正在使用: char path[1024]; uint32_t size = sizeof(path); if (_NSGetExecutablePath(path, &size) == 0) printf(“executable path is %s\n”, path); else printf(“buffer too small; need size %u\n”, size); 它可以工作,但最后会添加可执行文件名。

如何阻止gcc通过标准库路径传递-L到链接器

我有一个脚本需要阻止gcc传递-L标准库路径到ld 。 使用-nostdlib抑制-lc -lgcc等但不抑制-L 。 使用-Wl,-nostdlib可以防止链接器使用自己的标准路径,但不会阻止gcc使用标准路径传递-L 。 有没有办法确保gcc在库路径中没有任何内容调用链接器期望我在命令行上显式写入的目录?

如何找到两条绝对路径的相对路径?

给出两条绝对路径,例如 /a/path/to/a /a/path/to/somewhere/else 我怎样才能获得从一个到另一个的相对路径, ../a ? 从某种意义上说,与realpath相反。

在Windows上获取目录分隔符char? (’\’,’/’等)

tl; dr:我如何询问Windows系统上当前的目录分隔符是什么? 不同版本的Windows似乎表现不同(例如\和/都在英文版本上工作, ¥显然是在日文版本上,₩显然是在韩文版本上等等… 有没有办法避免硬编码,而是在运行时询问Windows? 注意: 理想情况下,解决方案不应该依赖于像ShlWAPI.dll这样的高级DLL,因为较低级别的库也依赖于此。 所以它应该真的要么依赖于kernel32.dll还是ntdll.dll之类的东西……尽管我找不到任何东西 ,无论是在高水平还是在低水平。 编辑: 一些小实验告诉我,它是Win32子系统(即kernel32.dll ……或者它是ntdll.dll RtlDosPathNameToNtPathName_U ?不确定,没有测试…),它将正斜杠转换为反斜杠,而不是内核。 (前缀\\?\使得以后在路径中无法使用正斜杠 – 而NT本机用户模式API也会因正斜杠而失败。) 所以显然它并没有完全“内置”到Windows中,而只是一个兼容性function – 这意味着你不能盲目地用斜线代替反斜杠,因为任何随机前缀\\?\到路径的程序都会自动向前突破斜杠。 我对这方面的结论有不同的感受,但我只是想我会提到它。 (我将其标记为“路径分隔符”,即使这在技术上是不正确的,因为路径分隔符用于分隔路径 ,而不是目录( ;与\ )。希望人们得到我的意思。)

#include c / c ++中的绝对路径语法

出于某种原因,我需要在#include使用绝对路径作为我的系统。 使用#include “D:\temp\temp_lib\temp.h”可以接受吗? 我尝试了这些不同的用法,这一切似乎都有效。 #include “D:\temp\temp_lib\temp.h” #include “D:\\temp\\temp_lib\\temp.h” #include “D:/temp/temp_lib/temp.h” 我只是想知道我应该使用哪一个? 我正在使用MSVC 2005.我想知道这三个是否仍然适用于Linux或其他环境。 我期待#1在编译期间是一个错误,但我没有得到任何错误。 任何人都知道为什么会这样?