为什么 fopen() 函数在将 char 传入函数时会抛出错误?
Why does fopen() function throws error when char is passed into it?
我正在使用 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
?
再看看函数声明。 mode
参数的类型为 const char *
,即指向 char
.
的指针
模式参数是一个指针。当您传递一个 char 时,它会将其解释为一个指针,因此代码会尝试读取一些随机内存。幸运的是,随机存储器不可读,因此代码段错误。
我正在使用 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
?
再看看函数声明。 mode
参数的类型为 const char *
,即指向 char
.
模式参数是一个指针。当您传递一个 char 时,它会将其解释为一个指针,因此代码会尝试读取一些随机内存。幸运的是,随机存储器不可读,因此代码段错误。