各位大佬,有一个关于随机文件的写入读取问题,求指点!!
vb吧
全部回复
仅看楼主
level 1
代码如下:
Private Type sa
a1 As String * 6
a2 As String * 6
End Type
Private a As sa, b As sa
Dim c As String * 6
Private Sub Form_Load()
Show
Open "C:\Users\Desktop\text\data1.dat" For Random As #1 Len = Len(a)
a.a1 = "一二三四五六"
a.a2 = "asdfgh"
Put #1, 1, a
Get #1, 1, b
Close #1
Print b.a1
Print b.a2
End Sub
代码运行以后,窗体上显示的是"一二三"和"asdfgh"。我已经定义a.a1是一个长度为6的定长字符串了,为什么写入随机文件只能写进去三个汉字呢?而英文字母就可以写进去完整的6个?在网上搜了好久都搞不懂,求大佬指点!
2023年01月05日 11点01分 1
level 15
字符存储空间的问题,一个英文字符只需要1个字节,一个汉字需要2个字节,6个字节自然只能存3个汉字
2023年01月05日 11点01分 2
vb里面不是所有字符都占两个字节吗?a="asdfgh",print lenb(a)也是等于12呀。而且定义的时候string*6不是6个字符吗,为什么6个汉字存不进呢?求大佬指教
2023年01月05日 12点01分
@贴吧用户_5Xb16e5 VB里用的字符编码和文件存储用的编码不一样,VB用的是Unicode,不论中文还是英文字符都是一个字符占2个字节,而文件存储时的字符编码是ANSI,一个英文字符只占1个字节,一个汉字才占2个字节
2023年01月05日 12点01分
@贴吧用户_5Xb16e5 然后,随机文件的记录长度单位是字节,也就是你用Len取的字符数,对应到文件当中就变成了字节数,存英文字符没问题,但是存汉字就不够用了
2023年01月05日 12点01分
@初音✨七奈 懂了懂了,谢谢大佬!再问一个问题,还是我题目写的代码,如果确定要用随机文件存汉字的话,是不是要把len=len(a)改成len=len(a)*2就可以了呢?
2023年01月05日 12点01分
level 1
一个汉字顶两个英文
2023年01月06日 00点01分 3
1