C++builder中实现保存文件的问题?
小弟需要将2维数组按照下面的格式保存为文本文件:例如(1,1)保存为[aa];其中整数1对应a,2对应b,如此类推。写的代码如下:chartemp1,temp2;Ansi...
小弟需要将2维数组按照下面的格式保存为文本文件:
例如(1,1) 保存为[aa];
其中整数1对应a,2对应b,如此类推。写的代码如下:
char temp1,temp2;
AnsiString GoMem[400];
int GoNum=0;
temp1=int (x+96);
temp2=int (y+96);
GoTemp="B["+temp1+temp2+"];";
GoMem[GoNum]=GoTemp;
GoNum++;
GoTemp="";
temp1='';
temp2='';
保存文件的代码如下:
FILE *fp;
String s="";
if(SaveDialog1->Execute())
{
s=SaveDialog1->FileName;
if(!(UpperCase(ExtractFileExt(s))==".SGF"))
s+=".SGF";
fp=fopen(s.c_str(),"w");
if(!fp)
{
MessageBox(Handle,"无法创建文件!磁盘写保护或空间不足!","SK五子棋",MB_OK);
return;
}
// 写入文件.
for(int i=0;i<GoNum;i++)
{
fprintf(fp,GoMem[i]);
}
fclose(fp);
现在的问题是调试报错,
1是 [C++ Error] Unit1.cpp(678): E2085 Invalid pointer addition
2是 [C++ Error] Unit1.cpp(682): E2129 Character constant too long (or empty)
请教该如何改正? 展开
例如(1,1) 保存为[aa];
其中整数1对应a,2对应b,如此类推。写的代码如下:
char temp1,temp2;
AnsiString GoMem[400];
int GoNum=0;
temp1=int (x+96);
temp2=int (y+96);
GoTemp="B["+temp1+temp2+"];";
GoMem[GoNum]=GoTemp;
GoNum++;
GoTemp="";
temp1='';
temp2='';
保存文件的代码如下:
FILE *fp;
String s="";
if(SaveDialog1->Execute())
{
s=SaveDialog1->FileName;
if(!(UpperCase(ExtractFileExt(s))==".SGF"))
s+=".SGF";
fp=fopen(s.c_str(),"w");
if(!fp)
{
MessageBox(Handle,"无法创建文件!磁盘写保护或空间不足!","SK五子棋",MB_OK);
return;
}
// 写入文件.
for(int i=0;i<GoNum;i++)
{
fprintf(fp,GoMem[i]);
}
fclose(fp);
现在的问题是调试报错,
1是 [C++ Error] Unit1.cpp(678): E2085 Invalid pointer addition
2是 [C++ Error] Unit1.cpp(682): E2129 Character constant too long (or empty)
请教该如何改正? 展开
4个回答
展开全部
先读到memo内 然后savetofile
直接一些
先放一个Memo控件叫Memo1吧
//有多少个就循环着加到Memo1里
Memo1->Lines->Add("[aa]"); //加多少个数组放到循环里
把所有的数组都加到Memo1后
Memo1->Lines->SaveToFile("C:\\文件名.后缀名");
下次再读出来
Memo1->Lines->loadfromfile("C:\\文件名.后缀名");
直接一些
先放一个Memo控件叫Memo1吧
//有多少个就循环着加到Memo1里
Memo1->Lines->Add("[aa]"); //加多少个数组放到循环里
把所有的数组都加到Memo1后
Memo1->Lines->SaveToFile("C:\\文件名.后缀名");
下次再读出来
Memo1->Lines->loadfromfile("C:\\文件名.后缀名");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试改动:
1,
GoTemp="B["+AnsiString(temp1)+AnsiString(temp2)+"];";
2,
temp1=' ';
temp2=' ';
或
temp1=0;
temp2=0;
3,
fprintf(fp,"%s",GoMem[i].c_str());
1,
GoTemp="B["+AnsiString(temp1)+AnsiString(temp2)+"];";
2,
temp1=' ';
temp2=' ';
或
temp1=0;
temp2=0;
3,
fprintf(fp,"%s",GoMem[i].c_str());
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GoTemp="B["+temp1+temp2+"];"; 不对,应该是
GoTemp=String("B[")+temp1+temp2+"];";
因为char* 没有 + 的操作,而String有。
temp1=''; 不对。temp1是char, 是数值,一定要有值。
不像字符串可以是空串,‘’之间一定要有东西!
比如 temp1='\0'
GoTemp=String("B[")+temp1+temp2+"];";
因为char* 没有 + 的操作,而String有。
temp1=''; 不对。temp1是char, 是数值,一定要有值。
不像字符串可以是空串,‘’之间一定要有东西!
比如 temp1='\0'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用string str 格式化 (a,b)到字符串中,str。Fomat(“【%d%d】”,a,b) 然后writefile();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询