Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么在功能之外无法访问此功能?_C - Fatal编程技术网

C 为什么在功能之外无法访问此功能?

C 为什么在功能之外无法访问此功能?,c,C,我不知道为什么我在尝试访问函数外部的所有轨道\u ptr[1]。轨道[1]。轨道\u title时出现分段错误。这只是我全部代码的一小部分。我该如何解决这个问题?或者,有什么更好的方法将我从文件中扫描的信息返回到主目录中 album *pharse_album(FILE *album_file,int *number_of_albums){ int number_of_album,number_of_tracks,number_of_charaters; int i,j;

我不知道为什么我在尝试访问函数外部的
所有轨道\u ptr[1]。轨道[1]。轨道\u title
时出现分段错误。这只是我全部代码的一小部分。我该如何解决这个问题?或者,有什么更好的方法将我从文件中扫描的信息返回到主目录中

album *pharse_album(FILE *album_file,int *number_of_albums){
    int number_of_album,number_of_tracks,number_of_charaters;
    int i,j;
    char dummy_space;

    fscanf(album_file,"%d", &number_of_album);

    *number_of_albums = number_of_album;

    album *all_albums_p = (album *)malloc(sizeof(album)*number_of_album);
    for(j=0;j<number_of_album;j++){
        fscanf(album_file,"%d", &all_albums_p[j].num_tracks);
            tracks *all_tracks_p = (tracks*)malloc(sizeof(tracks)*all_albums_p[j].num_tracks);
        for(i=0;i<all_albums_p[j].num_tracks;i++){
            fscanf(album_file,"%d", &number_of_charaters);
            all_albums_p[j].tracks = (tracks *)malloc(sizeof(tracks)*all_albums_p[j].num_tracks);
            all_albums_p[j].tracks[i].tracks_title = (char *)malloc(sizeof(char)*(number_of_charaters+6));
            fscanf(album_file," ",dummy_space);
            fscanf(album_file, "%[^\n]s", all_albums_p[j].tracks[i].tracks_title);

            printf("%s\n",all_albums_p[j].tracks[i].tracks_title);
        }
      }
      return all_albums_p;
    }


    main(){

        all_tracks_ptr = pharse_album(album_file,number_of_albums);

        for(i=0; i < *number_of_albums ;i++){
            printf("%d : %d\n",i,all_tracks_ptr[i].num_tracks);
            printf("%s",all_tracks_ptr[1].tracks[1].tracks_title);

        }
    }
album*pharse\u相册(文件*相册文件,整数*相册数量){
专辑的整数、曲目数、角色数;
int i,j;
字符虚拟空间;
fscanf(相册文件“%d”和相册的编号);
*相册数量=相册数量;
专辑*所有专辑p=(专辑*)malloc(专辑大小)*专辑数量);

对于(j=0;j据我所知,代码从来不会生成一个
struct tracks\uu
,我假设这就是
所有轨道\u ptr
应该指向的?

你没有告诉我们所有轨道\u ptr都被分配到哪里,事实上,如果
main
的代码是准确的,它就没有被分配。OP,请发布尽可能小的一段代码,运行时,演示您的问题-也就是说,请为您的问题制作一个完整的示例,然后删除演示问题所不需要的所有代码部分。(事实上,在这样做时,您可以自己识别错误,这是一种有用的技术)。刚刚添加了分配所有曲目的部分。此行的作用是:所有曲目=所有曲目粘贴()?opps抱歉错过粘贴。现在更正。是的。我想返回所有专辑的曲目标题。这样我就可以打印专辑及其曲目。我会等到你发布代码。返回值是
pharse\u album()
打算成为唱片集数组?如果是,函数调用方如何知道数组中有多少唱片集结构?