我正在尝试获取其中一个函数参数并将其存储在 char 数组中。
您的代码的问题是您没有一个字符数组来存储复制的参数。你所拥有的是一个指针。您必须分配要在其中复制参数的存储空间。或者,您可以rootdir
使用数组代替指针,但必须小心防止副本溢出固定大小的数组。
分配存储
bb_data->rootdir = malloc(strlen(argv[argc - 2]) + 1); // +1 is for the NULL
使 rootdir 成为一个数组
#include <limits.h>
#include <stddef.h>
#include <stdlib.h>
...
struct bb_state {
FILE *logfile;
char rootdir [PATH_MAX];
};
struct bb_state *bb_data;
size_t len;
len = strlen(argv[argc - 2]);
if (len >= PATH_MAX) {
// Argument is too long.
fprintf(stderr, "Argument is too long: %s\n", argv[argc - 2]);
return EXIT_FAILURE;
}
bb_data = malloc(sizeof(struct bb_state));
strcpy(bb_data->rootdir, argv[argc - 2]);