在C中创建新文件时出现分段错误

时间:2019-04-05 06:49:10

标签: c segmentation-fault printf fopen

我很困惑为什么这段代码返回分段错误。 基本上,我尝试使用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,所以很可能就是问题所在。 知道是什么原因造成的,如何解决?

1 个答案:

答案 0 :(得分:4)

问题出在scanf("%s", &s1)上。 宁可写scanf("%s", s1);,因为s1已经是一个指针。

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

相关问题