我很困惑为什么这段代码返回分段错误。
基本上,我尝试使用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
,所以很可能就是问题所在。
知道是什么原因造成的,如何解决?
答案 0 :(得分:4)
问题出在scanf("%s", &s1)
上。
宁可写scanf("%s", s1);
,因为s1
已经是一个指针。
您要做的是将指针传递给指针。