【问题标题】:Why does fopen() function throws error when char is passed into it?为什么将 char 传递给 fopen() 函数会引发错误?
【发布时间】:2018-04-01 00:30:56
【问题描述】:

我正在使用fopen 函数(可以在此处找到:https://www.tutorialspoint.com/c_standard_library/c_function_fopen.htm)从 C 中的文本文件中读取。函数原型定义为:

FILE *fopen( const char * filename, const char * mode );

看到第二个参数(mode)要求我传入一个char,我写了如下:

fp = fopen("testfile", 'w');

但是,这引发了分段错误。当我将其替换为:

fp = fopen("testfile", "w");

错误消失了。为什么第二个参数需要string,而不是原型所示的char

【问题讨论】:

  • 'w' 是一个字符,"w" 是一个字符* -- fopen() 想要一个字符*

标签: c fopen


【解决方案1】:

再看函数声明。 mode 参数的类型为 const char *,即指向 char 的指针。

【讨论】:

    【解决方案2】:

    mode 参数是一个指针。当您传递一个 char 时,它会将其解释为一个指针,因此代码会尝试读取一些随机内存。幸运的是,随机存储器不可读,因此代码段错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2018-09-03
      • 2023-03-08
      • 2020-06-26
      • 1970-01-01
      相关资源
      最近更新 更多