我正在使用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
?
答案 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时,它会将其解释为指针,以便代码尝试读取一些随机内存。幸运的是,随机存储器不可读,因此代码段出错。