回 帖 发 新 帖 刷新版面

主题:读的错还是写的错?

我有代码如下:
type kw
i as integer
k as integer
c as integer 
end type
dim kv as kw
k[1]=0:k[2]=1:k[3]=2:k[4]=3:k[5]=4
c[1]=0:c[2]=0:c[3]=1:c[4]=2:c[5]=3
open "kw" as #10 len=len[kv]
for i=1 to 5
    kv.i=i
    kv.k=k[i]
    kv.c=c[i]
    print kv.i,kv.k,kv.c
    put #10 ,i,kw
next i
close
open "kw" as #10 len=len[kv]
for i=1 to 5
    get #10, i,kw
    print kv.i,kv.k,kv.c
next i
close
end
第一次输出为:
     1     0    0
     2     1    0
     3     2    1
     4     3    2
     5     4    3
预期第二次输出与第一次同,但结果是:
     5     4    3
     5     4    3
     5     4    3
     5     4    3
     5     4    3
写错了? 读错了? 还是定义错了?还是别的什么错?查了几天,没查出来,故求教.如何谢,从君意!

回复列表 (共3个回复)

沙发

小程序没有什么需要计较的,在做大一点的项目的时候,
你必须要记得每个变量的名字类型和它的意义,一子落错全盘皆落索,
不过编程没关系,找出来了改就是了.

1.  你在定义结构的时候,我没有看到结构的名字,
    看样子应该是 kw (最好取一些既易记又易认还易分辨还不易弄错的名字)
    那就应该是 type kw

2.  文件也是,就算是拿来测试的,应该用一些 1.txt 之类的文件名
    既容易认,又不易出错,还方便输入,这里是没错的,只是多口说几句.

3.  结构名又是 i , 循环变量又是 i , 虽然 QB 没眼花,你都会眼花,
    这里也没错,呵呵.

4.  数组也是一个问题,这里没看到你定义,可能你已经在其他地方定义了,
    这就不说了, 最后还是换换名字, 以免眼花.否则 QB 搞错了你也没得怨

5.  你的程序里其实只有一个地方错的:
    那就是 get 的时候写的是 kw , 而 print 的时候写的是 kv ,
    也就是说 kv 在第二次循环时根本没赋值,只保留上一次循环的最后一个值.
    这就是我上面长篇大论的原因.

6.  如何谢? 从君意?
    我只要求你别说谢谢.

板凳

看样子,楼主该是已经改过了,
如果我没记错的话,应该是没改好,
反而把 put 改错了.

3 楼

看过,改了,确是迷途指返,怎能不谢.
我取的名字[变量,子程序,文件,等],的确太相似,搞的我也直犯晕,很不好的毛病,确实要改.
不过这次错.倒不是看错了,真的是概念不清.怨不的有时行有时不行.在行时,很理想,如有效益,必重谢,

我来回复

您尚未登录,请登录后再回复。点此登录或注册