我很困惑为什么这段代码会返回一个段错误。
基本上,我尝试使用 fopen()
和 fprintf()
创建一个新的文本文件。
void my_function() {
FILE *g;
char s1[30];
printf("\nNew file (text): ");
scanf("%s",&s1); //gets(s1);
g = fopen(s1,"w");
fprintf(g,"something");
fclose(g);
}
我尝试检查 fopen 的有效性:
if (g == NULL) {
perror("fopen()");
exit(1);
}
它返回 fopen(): Bad address
,所以这可能就是问题所在。
知道是什么原因造成的以及如何解决吗?
最佳答案
问题出在 scanf("%s", &s1)
上。
而是写 scanf("%s", s1);
因为 s1
已经是一个指针。
您所做的是将指针传递给指针。
关于c - 在 C 中创建新文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529699/