回 帖 发 新 帖 刷新版面

主题:[讨论]古怪的运行错误

我写的小程序中要用到 打开文本文件,写入/读取字符串的功能。相关代码如下:

//-------------------以下是保存时间纪录的代码---------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 FILE  *fp;
 AnsiString dos="time.txt";//将要保存的文件名赋给字符串类。
                           //这里是为了能实现改变存储文件名称做的测试。
 char *p="time.txt",*q;//定义字符指针,准备接收字符串类中的字符串。
 /*因为变量P使用时,若用下面语句赋值,检验赋值正确,但应用在fopen函数中
 却无法打开制定文件。被迫设置第二个变量Q来执行相同功能*/
 strcpy(q,dos.c_str());
 fp=fopen(q, "w");//打开创建p制定的文件
 fprintf(fp,"%s\n",savetime);//将时间以字符串形式写入文件
 fclose(fp);//执行保存操作并关闭文件。
 
 char z=p[6];//测试变量数值时附加用于暂停程序执行的语句。多余
 /*用strcpy函数和string类的c_str()成员函数实现类向字符串的转换
                       接收变量为字符指针P,即字符串变量(数组)P。*/
}
采取上述非常手段后程序勉强编译运行通过,功能正常。
但是,将这段代码应用到读取文件的函数中时,始终出错,死活不能实现同样功能。
现象是:用P制定要写入代码的文件名称时,可以正常运行,换成上面代码中的Q时,不能打开。

以上代码,我在运行中检测过pq的值,p[8],q[8](即字符串结尾符的位置)均为'\0',赋值正常。

由于小弟电脑不幸断电,写入文件的那段代码没有保存,这里就不给各位大大哥看了。

自己感觉程序逻辑没有问题,但总是遇到这种明明正确却偏偏出错的问题。郁闷,疯狂郁闷。

回复列表 (共1个回复)

沙发

你好.我是全职网赚工作者.
如果你有时间有电脑.会打字.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ909065437

我来回复

您尚未登录,请登录后再回复。点此登录或注册