您的位置:首页 > 编程语言 > C语言/C++

C语言中如何实现建立和写入文本文档

2011-02-15 13:11 281 查看
最近由于公司要做一个小软件,功能很简单,就是实现通过界面的选择而产生相应的文本文档。在产生文本文档的过程中遇到了诸多问题,一一解决的过程中学到了很多东西。现把C语言中如何实现建立和写入文本文档总结如下:

FILE *file;

file=fopen("D://H5As_User//example.txt","wt"); //打开文本文件(t)文件 ,fopen函数的具体参数可以在网上查

if(file==NULL) //打开失败

{

MessageBox(hwnd,"打开失败!","抱歉",MB_OK);

}

else

{

TCHAR cResult[256];

lstrcpy(cResult,"aaaa");

fwrite(cResult,sizeof(cResult),1,file);//第一个参数为要写入的字符串,第二个为每次写入的字节数,第三个为写入的次数,第四个为文件的指针

}

fcolse(file);//最后别忘了关闭文件!!!

在这里,我遇到了一个问题,就是在写入文本文档后产生的文件并不是真正的纯文本文件,用记事本是看不到的,用UE打开会显示一些地址码,这说明在保存的过程中还写入了一些虚拟的东西。后来经过检查和调试发现在写入时我写入的字节数大于实际字符串的字节数,因此在文本文档中还保存了虚拟空间。在上面对cResult的定义中,其长度是256,在赋值中其长度是4,而sizeof(cResult)结果为其定义的长度256,因此它向文本文档中写入了256个字节的内容,而实际的字符串只有四个字节,因此其他的均保存为虚拟的地址空间。因此在写入纯文本文档时写入字节数一定要与字符串的实际字节数相等。

在fwrite函数的应用中,我们想写入指定的字符串到文档中,往往会使用函数fwrite(cResult,sizeof(cResult),1,file)。上面写了它的各个参数的意义。那么怎样才能恰好写入整个字符串口而不会多出或缺少呢?我们配合使用第二和第三个参数可以实现,一般会选择一次写入,即第三个参数填1,那么第二个参数是关键了!!!这里我们要注意上面所用的sizeof(cResult),它获得的是cResult字符串定义的长度256,而不是实际长度4。所以在这里我们最好用另一个函数strlen或lstrlen,它获得的是实际字符串的长度,上面lstrlen(cResult)结果为4,正好是我们需要的结果!!!

所以在这里我们要注意的是,sizeof获得的是字符串的定义长度,而strlen获得的是字符串的实际长度。所以我们当因需而用,可以方便的解决很多问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: