【发布时间】:2018-08-31 10:26:16
【问题描述】:
我对 C 知之甚少,无法完成这个简单的任务:
#include <stdio.h>
#include <string.h>
void load_hex_fw() {
char *warea = getenv("WORKAREA");
char hex[] = "/path/to/fw.hex";
char hexfile; // several trials done here (*hexfile, hexfile[500], etc.)
strcat(hexfile, *warea);
strcat(hexfile, hex);
printf("## %s\n", hexfile);
FILE *file = fopen(hexfile, "r");
fclose(file);
}
上面的代码基本上是打开一个文件来读取。但是由于 hex 文件的绝对路径很长(而且我也在考虑将来重用这个函数),所以我需要给 fopen() 提供一个灵活的 hexfile 变量。谷歌搜索字符串连接总是给我strcat()或strncat,但我总是遇到分段错误。我对指针和引用感到困惑。任何帮助是极大的赞赏。提前致谢!
【问题讨论】:
-
您必须将字符串连接到字符串,而不是将字符串连接到字符。您发布的代码甚至不应该编译。
-
代码不应该编译。你应该有
#include <string.h>。由于hexfile是单个字符,而不是它们的大数组,因此调用strcat()时会出现错误。如果前面没有&,你不能将它传递给strcat();但即使使用&,您也无法安全地将其传递给strcat(),因为它必须是一个数组。 -
请注意,
strncat()绝不是解决方案的一部分;它本身就是一个问题,使用它会使你的问题变得更糟。
标签: c string environment-variables concatenation