请问::关于写文件的问题!!!!!!!!请进来看看 .
根据在窗口输入的目录和文件名,把接收的数据不断写入到这个文件中去。
请看我的代码:
-----------------------------------------------
for(i=0;i<ListView->Items->Count;i++){//查找ListView,符合条件时就写文件。
char *tmp1;
sprintf(tmp1,"%s",ListView->Items->Item[i]->Caption);
char *tmp2;
sprintf(tmp2,"%s",ListView->Items->Item[i]->SubItems->Strings[0]);
if( strcmp(projectname,tmp1)==0
&&strcmp(processname,tmp2)==0 ){ //查找到
FILE * fp; //开始写文件
char *path;
sprintf(path,"%s",g_filenameedit[i]->Text); //**g_filenameedit[]中存放的是要创建的文件目录和名字**
fp = fopen(path,"wb");
fwrite(logmsg,128 * 1024 , 1, fp);
fclose(fp);
}
} // End
------------------------------------------------
为什么文件没有建立???结果什么都没有。
什么原因?另外代码里面有哪些错误???
请大家多帮助,谢谢。
问题点数:100、回复次数:12Top
1 楼wohow()回复于 2005-04-22 15:14:51 得分 20
String类型可以直接给sprintf的%s用吗?应该用Caption.c_str(),其中Caption代表String对象Top
2 楼wohow()回复于 2005-04-22 15:16:30 得分 0
另外你的指针不用初始化的吗Top
3 楼bluesen(善哉)回复于 2005-04-22 15:25:32 得分 10
呵呵,漏洞百出,没有崩溃真是天大的奇迹。
建议:找一本最基础的C语言的教科书,仔细阅读,并做练习。Top
4 楼yydelphi()回复于 2005-04-22 15:29:05 得分 0
wohow(),我按你说的改过了,但是还是没有结果?怎么回事?谢谢
bluesen(..):麻烦你把我的漏洞说出来可以嘛?我也知道自己基础差,但是现在没条件从头学,只能
在平时多改进了。谢谢Top
5 楼cczlp(不惑)回复于 2005-04-22 15:32:07 得分 30
FILE * fp; //开始写文件
char *path;
sprintf(path,"%s",g_filenameedit[i]->Text); //**g_filenameedit[]中存放的是要创建的文件目录和名字**
fp = fopen(path,"wb");
fwrite(logmsg,128 * 1024 , 1, fp);
fclose(fp);
--------------------------------------------------
改成这样:
FILE * fp; //开始写文件
char path[260];
sprintf(path,"%s",g_filenameedit[i]->Text); //**g_filenameedit[]中存放的是要创建的文件目录和名字**
fp = fopen(path,"wb");
if (fp)
{
fwrite(logmsg,128 * 1024 , 1, fp);
fclose(fp);
}
else
{
ShowMessage("创建文件错误:"+path);
}
Top
6 楼NetSpider9804040(网络蛛蛛)回复于 2005-04-22 15:35:06 得分 30
我的写法如下:
TStringList *list = new TStringList();
list->Clear();
for(i=0;i<ListView->Items->Count;i++){//查找ListView,符合条件时就写文件。
char *tmp1;
sprintf(tmp1,"%s",ListView->Items->Item[i]->Caption);
char *tmp2;
sprintf(tmp2,"%s",ListView->Items->Item[i]->SubItems->Strings[0]);
if( strcmp(projectname,tmp1)==0
&&strcmp(processname,tmp2)==0 ){ //查找到
char *path;
sprintf(path,"%s",g_filenameedit[i]->Text); //**g_filenameedit[]中存放的是要创建的文件目录和名字**
/* fp = fopen(path,"wb");
fwrite(logmsg,128 * 1024 , 1, fp);
fclose(fp);*/
list->Add("你要写入文件的内容");
}
}
list->SaveToFile("你要保存的文件名");
delete list;
list=NULL;
// End
Top
7 楼wohow()回复于 2005-04-22 15:35:32 得分 0
sprintf(tmp1,"%s",ListView->Items->Item[i]->Caption);
这一句没有崩溃说明要么ListView->Items->Count==0,要么流程没有到for循环来Top
8 楼wohow()回复于 2005-04-22 15:37:14 得分 0
sprintf(tmp1,"%s",ListView->Items->Item[i]->Caption);
这一句没有崩溃说明要么ListView->Items->Count==0,要么流程没有到for循环来Top
9 楼yydelphi()回复于 2005-04-22 15:58:15 得分 0
谢谢各位
我按 NetSpider9804040(网络蛛蛛)说的改了下,还是没有结果。但是程序不会死了。原来多按几下按钮(通过这个Button来启动改程序)就会死掉。
按cczlp(不惑) 兄的改了下,程序编译报错,ShowMessage("创建文件错误:"+path);这里path有问题。
谢谢wohow(),我会逐渐进步的。
怎么还是没有结果呢???
各位给分析下 .
难道是收到的logmsg没有内容?那文件也要建立啊,怎么连文件都没建立。
ListView->Items->Item[i]->Caption应该不是空的,我之前也把ListView->Items->Item[i]->Caption中的内容送出去了,Server端收的到。
Top
10 楼yydelphi()回复于 2005-04-22 16:17:06 得分 0
各位再来帮我解决一下啊Top
11 楼cczlp(不惑)回复于 2005-04-22 16:19:54 得分 10
ShowMessage("创建文件错误:"+path);
==>
ShowMessage(AnsiString("创建文件错误:") + AnsiString(path));
Top
12 楼yydelphi()回复于 2005-04-22 16:40:48 得分 0
现在文件可以生成了也有内容 。
新的问题:怎么不断的接受数据并不断的更新文件?????Top




