文本文件的读写问题(在线等待)
FILE *stream;
String ss;
ss = Edit1->Text;
if ((stream = fopen("Login.txt", "a"))== NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return ;
}
fwrite(&ss, sizeof(ss), 1, stream);
fputs("\n",stream);
fclose(stream);
return ;
为什么最后写入文本文件中的是乱码,而且提示文件太大要用记事本打开?
请帮忙!
问题点数:20、回复次数:10Top
1 楼River_H(小河)回复于 2002-12-11 18:22:04 得分 0
FILE *stream;
String ss;
ss = Edit1->Text;
if ((stream = fopen("Login.txt", "a"))== NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return ;
}
int nSize = ss.GetLength()
fwrite(ss.GetBuffer(nSize), nSize, 1, stream);
fputs("\n",stream);
fclose(stream);
return ;
这样子试试Top
2 楼xunknown(爱你是我一生中理想)回复于 2002-12-11 18:25:22 得分 0
要调试你的程序太复杂了点;
但是我想是不是
这里的问题fwrite(&ss, sizeof(ss), 1, stream);
看函数声明:
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
////
但是第一个参数你给的是CString的地址。这个转换可能回出问题;
你不妨试试用字符数组!
Top
3 楼zearbo(榕树)回复于 2002-12-11 18:28:49 得分 0
可是用字符数组怎么,能把字符串的值传递给他呢?Top
4 楼point_to(一 指)回复于 2002-12-11 18:39:45 得分 0
先new一块堆给它
然后再writeTop
5 楼point_to(一 指)回复于 2002-12-11 18:48:51 得分 0
char *buf=new char[lenghth];
...
fwrite(buf, sizeof(ss), 1, stream);
Top
6 楼zearbo(榕树)回复于 2002-12-11 19:14:55 得分 0
strcpy(buf,Str);
如果Str 是个变量,比如,是Edit1->Text;那么程序会出错,怎么办?Top
7 楼xunknown(爱你是我一生中理想)回复于 2002-12-11 19:22:11 得分 0
char *c=new char[str.Length()+1];
for(int i=0,in=str.Length();i<in;i++)
c[i]=str[i];
c[i]=0;
Top
8 楼xunknown(爱你是我一生中理想)回复于 2002-12-11 19:27:10 得分 0
错了不用加1了;是
CString str;
char *c=new char[str.GetLength()];Top
9 楼zearbo(榕树)回复于 2002-12-11 19:38:51 得分 0
FILE *stream;
String Str;
Str= Edit1->Text;
char *buf=new char[Str.Length()];
int in,i;
in=Str.Length();
for( i=0;i<in;i++)
{
buf[i]=Str[i];
}
ShowMessage(Str);
// buf[i] = 0;
if ((stream = fopen("Login.txt", "a"))== NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return ;
}
fwrite(buf, sizeof(buf), 1, stream);
fputs("\n",stream);
fclose(stream);
delete buf;
return ;
可是还是有错啊,我怎么也,通不过啊,真是气死我了,Top
10 楼point_to(一 指)回复于 2002-12-11 19:48:40 得分 20
FILE *stream;
String Str;
Str= Edit1->Text;
char *buf=new char[Str.Length()];
int in,i;
in=Str.Length();
for( i=0;i<in;i++)
{
*buf=Str[i];//change******
buff++;
}
ShowMessage(Str);
// buf[i] = 0;
if ((stream = fopen("Login.txt", "a"))== NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return ;
}
fwrite(buf, sizeof(buf), 1, stream);//此处为 1 ??
fputs("\n",stream);
fclose(stream);
delete []buf;//change **********
return ;
可以用cfile类改一下!
Top




