c - 打开文件时出现分段错误

时间:2015-05-29 18:45:03

标签: c

我现在真的很困惑。我想创建一个文件并写入一个之前创建的字符串。但是当执行以下代码时,会发生分段错误错误并且程序终止。

FILE* output;
output = fopen("test.txt", "w");
fprintf(output, line);
fclose(output);

该行声明如下。

char* line = NULL;
line = malloc(1048576 + 1);

首先我认为由于malloc而出现错误,但是这段代码也不起作用:

FILE* output;
output = fopen("test.txt", "w");
fprintf(output, "LBASDHASD");
fclose(output);

我做错了什么?在该行之前运行的代码中,我也使用了文件指针,但文件已经关闭。

2 个答案:

答案 0 :(得分:1)

您的代码很糟糕,因为您没有检查错误。 var colors = require('colors'); colors.enabled = true; 可以是NULL指针(可能是一个):

output

您确定您有权在CWD中创建文件吗?

如果发生故障,

#include <errno.h> #include <string.h> FILE* output; output = fopen("test.txt", "w"); if(!output){ //handle the error printf("something went wrong: %s", strerror(errno)); exit(1); } fprintf(output, "LBASDHASD"); fclose(output); 会将fopen()设置为错误代码。像往常一样errno将为您提供此错误代码的说明。

答案 1 :(得分:0)

查看您是否正确使用了文件名,并确保它位于同一目录中,否则请提供该文件的完整路径。如果错误则不会打开并确保文件权限。

#include <stdio.h>

int main()
{
    FILE *output;
    output = fopen("test.txt","w");
    if(output==NULL)
    {
        printf("Error in opening the file");
        return 0;
    }
    fprintf(output, "%s", "LBASDHASD");
    fclose(output);
    return 0;
}