gpt4 book ai didi

c - 将 fts(3) 的输出写入文件

转载 作者:行者123 更新时间:2023-11-30 17:45:22 26 4
gpt4 key购买 nike

我正在开发一个文件模糊器,它可以改变音乐文件并将它们提供给 iTunes。我已经开发了代码来改变音乐文件,但我想使用多个音乐文件来增加代码覆盖率。所以我想遍历我的 iTunes 库并将文件路径加载到缓冲区或文件中;无论哪种方式都足够了。我这里的代码在 fprintf 函数上出现段错误。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <errno.h>
#include <fts.h>

int compare (const FTSENT**, const FTSENT**);

int main(void)
{
FILE * musicPaths;
musicPaths = fopen("Users/NahNig/music_paths", "wb");
char *p1 = "/Users/NahNig/Music/iTunes/iTunes Media/Music";
char *p2 = NULL;
char *path[1];
path[0] = p1;
path[1] = p2;
FTS* file_system = NULL;
FTSENT* child = NULL;
FTSENT* parent = NULL;

file_system = fts_open(path, FTS_COMFOLLOW | FTS_NOCHDIR, &compare);

if (NULL != file_system)
{
while( (parent = fts_read(file_system)) != NULL)
{
child = fts_children(file_system,0);

if (errno != 0)
{
perror("fts_children");
}

while ((NULL != child)
&& (NULL != child->fts_link))
{
child = child->fts_link;
fprintf(musicPaths, "%s%s\n", child->fts_path, child->fts_name);
}
}
fts_close(file_system);
}

return 0;
}


int compare(const FTSENT** one, const FTSENT** two)
{
return (strcmp((*one)->fts_name, (*two)->fts_name));
}

我尝试使用 sscanf 和 fprintf 将子项写入缓冲区,并使用 fwrite 尝试写入文件;他们都没有工作。我在 Google 上找到的内容也没有多大帮助,因此我们将不胜感激。

最佳答案

您没有测试 fopen() 的返回值,该值是 NULL,因为您错过了 /Users/NahNig/music_paths< 中的第一个 //。当您使用空指针时,程序会崩溃。

关于c - 将 fts(3) 的输出写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19649278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com