void fdgbuild() { seqstack s; s.top=-1; sqlist q; q.low=0; int flag=0; int i=0; int ch=0; while((ch=getchar())!="\n") { q.ch[i]=ch; printf("%c",q.ch[i]); i++; } printf("%d\n",i); }
时间: 2024-04-27 17:23:42 浏览: 86
SeqStack--学生.cpp
这段代码看起来是在实现一个函数 `fdgbuild()`,其中使用了一个顺序栈 `seqstack` 和一个顺序表 `sqlist` 来存储输入的数据。在函数中,先将栈的顶部指针 `top` 设置为 -1,表的下界 `low` 设置为 0,标志位 `flag` 设置为 0,以及变量 `i` 和 `ch` 初始化为 0。然后通过一个 while 循环,逐个读取用户输入的字符,并将其存储到顺序表中。每读取一个字符,就将其打印出来,并将 `i` 的值加 1。最后,打印出 `i` 的值,即输入的字符总数。
但是这段代码存在一些问题:
1. `getchar()` 返回的是一个整数,而不是一个字符,因此应该将 `ch` 的类型定义为 `char` 类型而非 `int` 类型。
2. 在 while 循环中,应该使用单引号 `' '` 而非双引号 `" "` 来表示字符常量。
3. 应该在读取字符之前检查顺序表 `q` 是否已经满了,避免溢出。
阅读全文