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

标签 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,所以这可能就是问题所在。 知道是什么原因造成的以及如何解决吗?

最佳答案

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

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

关于c - 在 C 中创建新文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529699/

相关文章:

c++ - 交换指针值

c - 基数程序中的段错误?

c++ - 使用 std::strtod 后发生奇怪的事情

c++ - 在 win32 中重定向 stdout 不会重定向 stdout

c++ - 在 C++ 中将 MQLONG 值转换为字符串

c - 处理嵌入结构中的矩阵时出现段错误

c - 生成整数的 4 位校验和

c - setcontext 中的段错误

c++ - 调整指针段错误的 vector

c++ - 下面的数组和指针示例背后的逻辑是什么?