截断文件时出现分段错误

时间:2019-03-04 06:46:14

标签: c

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

int main() {
    FILE *fileptr;
    char filechar[40];
    int siz;

    printf("Enter file name : ");
    scanf("%s", filechar);
    printf("please enter size");
    scanf("%d", siz);

    fileptr = fopen(filechar, "a+");
    ftruncate(fileno(fileptr), siz);
    fclose(fileptr);
    return 0;
}

我试图创建一个程序供用户选择以创建文件名和文件大小 运行时,即使使用fseek(fileptr, siz, SEEK_SET),也会遇到细分错误错误。

1 个答案:

答案 0 :(得分:2)

您遇到了细分错误,因为您将siz的值传递给了scanf()而不是其地址给转换说明符%d。为避免此类错误,应在strct模式下进行编译:{{1​​}}。

还有其他问题:

  • 您应该为此使用较大的类型gcc -Wall -Werror
  • 您应传递long的最大大小并使用更大的缓冲区。
  • 您应该测试filecharscanf()的返回值。
  • 您应该报告运行时错误。

这是修改后的版本:

fopen