代码给出错误分段错误(核心转储),如果位置已更改

时间:2017-06-14 01:15:36

标签: c fonts

我正在尝试通过将一些文本从第6个字节更改为第20个字节来自定义type1字体文件的标头,如下面的代码所示。

目前字体文件包含6-20字节的文本"%!PS-AdobeFont",我将其修改为"%!PS-RoughFont"。它的工作正常,但是一旦我在安装了所有字体的字体文件夹中安装此字体文件并运行相同的代码,它就会给出错误" 分段错误(核心转储)&#34 ;

为什么会出现此错误,我的意思是在其他位置使用相同的代码。 P.S我正在使用Linux操作系统。是否属于此目录的权限,因为它只允许读取权限。

代码

#include <stdio.h>

int main ()
{
 FILE *fp;

 fp = fopen("/usr/share/fonts/type1/gsfonts/test.pfb","r+");

 fseek(fp, 6, 0);
 fputs("%!PS-AdobeFont", fp);
 fclose(fp);

 return(0);
}

1 个答案:

答案 0 :(得分:0)

您可能没有写入权限。

使用包含错误检查的代码来查看问题所在:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    FILE* fp = fopen("/usr/share/fonts/type1//gsfonts/test.pfb", "r+");
    if(!fp)
    {
        perror("Error");
        return EXIT_FAILURE;
    }

    fseek(fp, 6, 0);
    fputs("%!PS-AdobeFont", fp);
    fclose(fp);
}