以下是我的代码:
QString fileName = appData + GROUND_DATALOG_DIR + "AISTABLE";
fileName = fileName + d_local.toString("_yyyy-MM-dd") + t_local.toString("_HH-mm-ss") + ".csv";
f_out = fopen(fileName.toAscii().data(), "wb+");
if (f_out == NULL) {
return;
}
QString headerString = "MMSI, Vessel_Name, Longitude, Latitude , Type, Navigation, SOG, COG, True_Heading, IMO, Call_Sign, Ship_Type\r\n";
for(int row = 0;row <ui->tableWidget->rowCount()-1; row++)
{
for(int column = 0;column< ui->tableWidget->columnCount()-1 ;column++)
{
headerString += ui->tableWidget->item(100,5)->text() +",";
}
headerString += "\r\n";
}
fprintf(f_out,"%s",headerString.toAscii().data());
fflush(f_out);
fclose(f_out);
当我执行项目行和列值小于100的程序时,我得到输出。但如果该值超过100,则会出现以下错误:
file.exe中0x5463d72c处的未处理异常:0xC0000005:访问冲突读取位置0x00000000。
我做错了什么?
答案 0 :(得分:2)
问题是:
headerString += ui->tableWidget->item(100,5)->text() +",";
您要求第100行中的项目。因此,如果没有第100行,则item()返回nullptr。我想这就是错误。
也许你想要:
headerString += ui->tableWidget->item(row,column)->text() +",";