在 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 已经是一个指针。

您所做的是将指针传递给指针。