c - XTC文件读取错误

标签 c unix gcc structure bioinformatics

#include "xdrfile/xdrfile_xtc.h"
#include "xdrfile/xdrfile.h"
#include<stdio.h>

int main()
{   
    int nat;
    int step;
    float time;
    float prec;
    int status;
    matrix box;
    rvec k[3];
    XDRFILE* xfp=xdrfile_open("test2.xtc","r");
    status=read_xtc(xfp,nat,&step,&time,box,k,&prec);
    xdrfile_close(xfp); 
    return 0;
}

我尝试使用 xtc 库运行代码以读取 GROMACS 的轨迹帧...我收到错误,

Segmentation error

你能帮忙吗???

最佳答案

查看this code

第二个参数 nat 必须设置为 read_xtc_natoms 函数检索到的值。无论如何都必须初始化该值。

此外,数组 k 宽度必须与 nat 值匹配。

#include "xdrfile/xdrfile_xtc.h"
#include "xdrfile/xdrfile.h"
#include<stdio.h>

int main(void)
{
    int nat;
    int step;
    float time;
    float prec;
    int status;
    matrix box;
    int status;

    char fileName[] = "test2.xtc";

    status = read_xtc_natoms(fileName, &nat);

    if (status != exdrOK)
    {
        XDRFILE* xfp = xdrfile_open(fileName, "r");
        if (xfp != NULL)
        {
            rvec k[nat];
            status = read_xtc(xfp, nat, &step, &time, box, k, &prec);
            xdrfile_close(xfp);
        }
        else
        {
            perror("File not opened:");
        }
    }
    else
    {
        fprintf(stderr, "read_xtc_natoms failure; return code %d", status);
    }

    return 0;
}

在上面的代码中我使用了VLAs创建 k 数组,但您也可以使用动态内存:

#include "xdrfile/xdrfile_xtc.h"
#include "xdrfile/xdrfile.h"
#include<stdio.h>

int main(void)
{
    int nat;
    int step;
    float time;
    float prec;
    int status;
    matrix box;
    int status;

    char fileName[] = "test2.xtc";

    status = read_xtc_natoms(fileName, &nat);

    if (status != exdrOK)
    {
        rvec *k = malloc(nat * sizeof(rvec));

        if (k != NULL)
        {
            XDRFILE* xfp = xdrfile_open(fileName, "r");
            if (xfp != NULL)
            {
                status = read_xtc(xfp, nat, &step, &time, box, k, &prec);
                xdrfile_close(xfp);
            }
            else
            {
                perror("File not opened:");
            }

            free(k);
        }
        else
        {
            fprintf(stderr, "Error in dynamic allocation of k vector\n");
        }
    }
    else
    {
        fprintf(stderr, "read_xtc_natoms failure; return code %d", status);
    }

    return 0;
}

关于c - XTC文件读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42153868/

相关文章:

c - 定义 USE(x) (x) = (x)

c - 文件描述符标志和函数

C:太大的堆栈会导致段错误吗?

linux - 在 shell 中组合命令有效,但在运行 .sh 文件时无效

c - 调用strcat时出现异常

macos - mac 上的 jenkins 从站目录无法访问

C++ Qt 写入 unix 套接字

c - mmap 一个不太可能被程序的任何其他部分使用的地址

c++ - 进程创建中的 Wait()

c++ - GCC (ARM) 相当于 __declspec(dllexport)