我现在真的很困惑。我想创建一个文件并写入一个之前创建的字符串。但是当执行以下代码时,会发生分段错误错误并且程序终止。
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);
我做错了什么?在该行之前运行的代码中,我也使用了文件指针,但文件已经关闭。
答案 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;
}