各位大侠好,我在ubuntu下向一个txt文件写数据

夏夜繁星 2011-08-31 11:01:43
我用fopen(“test.txt”,wt)方式写入数据如(华阳酒店 001 李四 2011--8-31)数据,但是用vim和gedit都打不开。不知道是怎么回事?提示好像是说二进制文件打不开。可我是用txt方式写的啊。
...全文
390 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_bird 2011-08-31
  • 打赏
  • 举报
回复
fp=fopen("test.txt","wt+"))

wt+是不是代表二进制方式读写的,改成w+试试。
夏夜繁星 2011-08-31
  • 打赏
  • 举报
回复
代码接下面

fwirte(&lisi,sizeof(struct hotel_list),1,fp);
fclose(fp);
这是基本的代码请大家帮忙看看,谢谢
[Quote=引用 3 楼 xiayefanxing 的回复:]
struct hotel_list
{
char hotel_name[20];
int room_num;
char name[20];
DAY arri;
DAY leave;
int bed_num;
};

int main()
{

int i;
struct hotel_list lisi;
strcpy(lisi.hotel_name,"华阳酒店");
……
[/Quote]
yule253456724 2011-08-31
  • 打赏
  • 举报
回复
代码贴一下吧 大家帮你看看
夏夜繁星 2011-08-31
  • 打赏
  • 举报
回复
我的代码里没有\r\n,现在的问题是,就写入一行数据。用vim,gedit显示不了。但是用代码可以读取,写入txt文件
[Quote=引用 10 楼 zhao4zhong1 的回复:]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
[/Quote]
赵4老师 2011-08-31
  • 打赏
  • 举报
回复
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
赵4老师 2011-08-31
  • 打赏
  • 举报
回复
推荐使用WinHex软件查看文件原始字节内容。
夏夜繁星 2011-08-31
  • 打赏
  • 举报
回复
file test.txt
test.txt:data
怎么看到控制字符,然后修改能用vim或者gedit显示呢
[Quote=引用 7 楼 yangting_lisa 的回复:]
引用 6 楼 yangting_lisa 的回复:
先用file命令看文件类型


估计文件中有控制字符
[/Quote]
小笨熊 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yangting_lisa 的回复:]
先用file命令看文件类型
[/Quote]

估计文件中有控制字符
小笨熊 2011-08-31
  • 打赏
  • 举报
回复
先用file命令看文件类型
夏夜繁星 2011-08-31
  • 打赏
  • 举报
回复
代码已经贴出来了,用程序可以打开读取txt文件的数据显示在终端上,但是就是用gedit或者vim打开没法显示
xunxun 2011-08-31
  • 打赏
  • 举报
回复
……
我表示我的vim可以正常打开二进制文件而不提示……
夏夜繁星 2011-08-31
  • 打赏
  • 举报
回复
struct hotel_list
{
char hotel_name[20];
int room_num;
char name[20];
DAY arri;
DAY leave;
int bed_num;
};

int main()
{

int i;
struct hotel_list lisi;
strcpy(lisi.hotel_name,"华阳酒店");
lisi.room_num=001;
strcpy(lisi.name,"李四");
lisi.arri.year=2011,lisi.arri.month=8,lisi.arri.day=30,lisi.leave.year=2011,
lisi.leave.month=8,lisi.leave.day=31,lisi.bed_num=3;
FILE *fp; /*指向文件的指针*/
//写数据
if((fp=fopen("test.txt","wt+"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("can not open file\n");/*没打开*/
exit(1); /*退出*/
}
yule253456724 2011-08-31
  • 打赏
  • 举报
回复
简单代码贴一下 大家帮你看看
hml1006 2011-08-31
  • 打赏
  • 举报
回复
如果你把非字符串类型写了进去,编辑器解不了码
拜托贴上代码,问题说的那么模糊,也不知道你怎么往文件写数据
Leaveye 2011-08-31
  • 打赏
  • 举报
回复
你不该用 fwrite 函数,而应该用 fprintf 函数。
hml1006 2011-08-31
  • 打赏
  • 举报
回复
你直接把结构体里的内容往文件里写,但是结构体里还有int类型的数据,编辑器不认识,用vim打开会有乱码
lz貌似对字符编码不了解

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧