为什么fopen()函数在传递char时会抛出错误?

时间:2018-04-01 00:30:57

标签: c fopen

我正在使用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

2 个答案:

答案 0 :(得分:4)

再看一下函数声明。 Sub del_row() Dim r As Long, y As Long y = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row For r = y To 2 Step -1 '<~~ this is the magic Sheet1.cells(r, 1).entirerow.Insert Shift:=xlDown Next r End Sub 参数的类型为mode,即指向const char *的指针。

答案 1 :(得分:0)

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