我想使用stat函数。但我不知道如何使用变量。我从其他进程中获取目录和子目录的值。
if( stat( DIRECTORY/sub-dir, &st ) == 0 )
{--}我收到如下错误消息:"error: invalid operands to binary /"
发布于 2013-10-30 00:25:54
您需要创建一个字符串并将其传递给stat()。假设VLA支持(可用相关选项的C99或C11 ),则:
char path[strlen(DIRECTORY) + strlen(subdir) + sizeof("/")];
snprintf(path, sizeof(path), "%s/%s", DIRECTORY, subdir);
struct stat st;
if (stat(path, &st) != 0)
...oops!...
else
...process data...如果你不支持VLA,你可以使用固定大小的数组,或者使用malloc()和free()。
以下任一项:
char path[PATH_MAX]; // Beware: not always defined; _POSIX_PATH_MAX?或者:
size_t pathlen = strlen(DIRECTORY) + strlen(subdir) + sizeof("/");
char *path = malloc(pathlen);
if (path != 0)
{
snprintf(path, pathlen, "%s/%s", DIRECTORY, subdir);
struct stat st;
if (stat(path, &st) != 0)
...oops!...
else
...process data...
free(path);
}发布于 2013-10-29 23:49:27
它应该是
if( stat( "DIRECTORY/sub-dir", &st ) == 0 )请参阅stat()手册页:
int stat(const char *path, struct stat *buf);第一个参数(路径)应为const char *类型,因此路径应以类似于"DIRECTORY/sub-dir"的字符串形式提供
如果DIRECTORY和sub_dir是变量,那么您必须将它们连接到第三个变量中:
char buf[256];
sprintf(buf, "%s/%s", DIRECTORY, sub_dir);
if( stat( buf, &st ) == 0 )https://stackoverflow.com/questions/19663042
复制相似问题