在 C 中创建新文件时出现分段错误
Segmentation fault when creating a new file in C
我很困惑为什么这段代码 returns 是段错误。
基本上,我尝试使用 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);
}
which returns fopen(): Bad address
,所以这可能就是问题所在。
知道是什么原因造成的以及如何解决吗?
问题出在 scanf("%s", &s1)
。
而是写 scanf("%s", s1);
因为 s1
已经是一个指针。
您所做的是将指针传递给指针。
我很困惑为什么这段代码 returns 是段错误。
基本上,我尝试使用 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);
}
which returns fopen(): Bad address
,所以这可能就是问题所在。
知道是什么原因造成的以及如何解决吗?
问题出在 scanf("%s", &s1)
。
而是写 scanf("%s", s1);
因为 s1
已经是一个指针。
您所做的是将指针传递给指针。