关于数组结束符的问题

cpp_1 2018-12-18 11:55:08
程序用的是PRO C
1.我创建一个结构体
struct {
int s_r_id[101]; //序号
int s_r_ITEM_NO[101]; //项目ID
char s_r_BACK_CAT_CODE[101][20]; //条码
varchar test[101][50]; //测试值
} stu;

用INTO :stu ; 把数据写入到这个结构体上

同时用这个写法读取一条数据,到这个临时数组里面
stu.s_r_id[101]=stu.s_r_id[in];
stu.s_r_ITEM_NO[101]=stu.s_r_ITEM_NO[in];
strcpy(stu.s_r_BACK_CAT_CODE[101],stu.s_r_BACK_CAT_CODE[in]);
strcpy(stu.test[101],stu.test[in]);

但现在有一个问题,如果数据中BACK_CAT_CODE的值是有长长短短的,如果当前的值读出来只有4位
那我在用printf输出的时候,这个BACK_CAT_CODE除了这4位,后面还显示很多空间
我看有一些写法是需要补上\0
但我用stu.s_r_BACK_CAT_CODE[101].arr[stu.s_r_BACK_CAT_CODE[101].len]='\0'
一直报错,我应该怎么写才能补上这个结束符呢,或是有什么办法不写结束符,可以直接把,4位以后的空格都去掉呢。

另外char的处理方式 和varchar处理是方式是否一致呢?

...全文
344 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2018-12-19
  • 打赏
  • 举报
回复
基本语法就不对 stu.s_r_BACK_CAT_CODE[101].arr[stu.s_r_BACK_CAT_CODE[101].len]='\0' 不应该是stu.s_r_BACK_CAT_CODE[101][len] = '\0'么 为啥多了个莫名其妙的arr
AlbertS 2018-12-18
  • 打赏
  • 举报
回复
先初始化成\0,然后再赋值就行了
cpp_1 2018-12-18
  • 打赏
  • 举报
回复
对的,就是这一句话编译不过去
不是varchar的值,读出来要补一个结束符嘛
arr 不是varchar类型的内容属性嘛
自信男孩 2018-12-18
  • 打赏
  • 举报
回复
stu.s_r_BACK_CAT_CODE[101].arr[stu.s_r_BACK_CAT_CODE[101].len]='\0'

这句编译不过去吧
s_r_BACK_CAT_CODE和arr是什么关系?从数据结构上看不出什么关系
cpp_1 2018-12-18
  • 打赏
  • 举报
回复
什么意思?
没明白

69,369

社区成员

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

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