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获得的是字符串的实际长度。所以我们当因需而用,可以方便的解决很多问题!
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获得的是字符串的实际长度。所以我们当因需而用,可以方便的解决很多问题!
相关文章推荐
- iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
- 【C语言】如何实现多行字符串的输入 并 将文本打印在屏幕上?
- 如何用c语言读出 txt 文档中的数据到结构体中
- C#编程实现Excel文档中搜索文本
- python(如何将数据写入本地txt文本文件)
- Jave中如何将输入的信息写入文本中
- Android 建立文件夹、生成文件并写入文本文件内容
- C语言实现<读取>和<写入> *.ini文件。
- jquery如何引用jsp变量实现获得的cookiepassword写入密码里
- C#中如何实现 textBox 文本的换行
- 如何用VS2010新建一个类?用来写C++文件的标准格式建立?就是能做到声把声明放在.H里,实现放在.CPP里的
- C语言------如何实现字符串数组和整形数组在终端上任意输
- c语言前n项求和如何实现?2个方法可行的
- 【Python笔记】如何用C语言实现Python第三方扩展包
- 如何在PHP中读取和写入WORD文档
- Android 建立文件夹、生成文件并写入文本文件内容
- 如何用excel打开后缀为txt的记事本文档,将记事本里用逗号分隔的文本转换成excel表格
- C语言如何"实现"面向对象?
- 用C语言简单演示如何借助zlib库实现文件的压缩和解压缩
- 如何实现Alfresco的多文档上传实现