免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: simhare
打印 上一主题 下一主题

[C] 又是我,我这次请各位高手帮我检查两个短小的C程序 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-06-30 14:14 |只看该作者

回复 #18 ziggler 的帖子

嗯,你说的对。
char al_empno;
al_empno=(FBFR32 *)rqst->data;
==============
这样也不行啊

论坛徽章:
0
22 [报告]
发表于 2009-06-30 14:16 |只看该作者

回复 #21 simhare 的帖子

现在是不知道那个aotl是什么函数?
我本来想在网上找一些用法,结果没有找到。

论坛徽章:
0
23 [报告]
发表于 2009-06-30 14:19 |只看该作者

回复 #22 simhare 的帖子

-------------
而且我采用了:
long ac_empno=0;
ac_empno = aotl(rqst->data);
==========
该方案根本不能通过buildserver编译!
报错:
Oracle_XA -s TEST1
/tmp/ccdVSYLa.o(.text+0x13): In function `TEST1':
: undefined reference to `aotl'
collect2: ld returned 1 exit status
CMDTUX_CAT:1832: ERROR: can't execute cc -m32   -I$TUXDIR/include -o test1 BS-1bd1.c  -L${TUXDIR}/lib test1.c -I /u01/oracle/precomp/public  -ltux -lbuft  -L${ORACLE_HOME}/lib -lclntsh -lfml -lfml32 -lengine -ldl -lpthread
----------------------

[ 本帖最后由 simhare 于 2009-6-30 14:20 编辑 ]

论坛徽章:
0
24 [报告]
发表于 2009-06-30 14:21 |只看该作者
我猜测这个aotl是tuxedo的某个函数。
可是我已经#include <atmi.h>了!!!
怎么还会undefined?????

论坛徽章:
0
25 [报告]
发表于 2009-06-30 14:32 |只看该作者
原帖由 ljmmail 于 2009-6-30 11:11 发表

long al_empno=0;

你注意以上的代码声明,你需要在后面这样使用。

al_empno = aotl(rqst->data);

然后你再执行对应的数据查询应该就可以了。

------------------
谢谢您提醒,感谢!!!!!
我还有一点点疑问,这个aotl是什么?麻烦您解释一下?
-------------------
我最后的解决方案是:
char *al_empno;
al_empno=(FBFR32 *)rqst->data;

EXEC SQL SELECT ENAME into :ac_ename FROM EMP WHERE EMPNO=:al_empno;
-------------------------

论坛徽章:
0
26 [报告]
发表于 2009-06-30 14:37 |只看该作者
atol就是将字符串转换为long型数据的函数。

论坛徽章:
0
27 [报告]
发表于 2009-06-30 14:42 |只看该作者

回复 #26 mgqw 的帖子

怪不得,我到处找不到原来是拼错了:
---------------------
函数名: atol
  功 能: 把字符串转换成长整型数
  用 法: long atol(const char *nptr);
  程序例:
  #include <stdlib.h>
  #include <stdio.h>
  int main(void)
  {
  long l;
  char *str = "98765432";
  l = atol(str); /* 原来为l = atol(lstr); */
  printf("string = %s integer = %ld\n", str, l);
  return(0);
  }
  atol(将字符串转换成长整型数)
  相关函数 atof,atoi,strtod,strtol,strtoul
  表头文件 #include<stdlib.h>
  定义函数 long atol(const char *nptr);
  函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
  返回值 返回转换后的长整型数。
  附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。
  范例 /*将字符串a与字符串b转换成数字后相加*/
  #include<stdlib.h>
  main()
  {
  char a[]=”1000000000”;
  char b[]=” 234567890”;
  long c;
  c=atol(a)+atol(b);
  printf(“c=%d\n”,c);
  }
  执行 c=1234567890

论坛徽章:
0
28 [报告]
发表于 2009-06-30 14:43 |只看该作者

回复 #26 mgqw 的帖子

感谢mgqw !

论坛徽章:
0
29 [报告]
发表于 2009-06-30 15:57 |只看该作者

能说一下tpcall的参数类型和作用吗?

if(tpcall("TEST1", (char *)reqbuf, 0L, (char **)&reqbuf, (long *)&reqlen, 0)<0)

中参数的含义是什么?

论坛徽章:
0
30 [报告]
发表于 2009-07-03 09:25 |只看该作者

回复 #29 yug1129 的帖子

int tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)
同步调用
客户端同步调用服务端的名为svc的SERVICE.
---------------
参数:
char *svc------>SERVICE的名称
char *idata---->输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内
long ilen-------->输入缓冲区的长度
char **odata--->输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内
long   *olen----->输出缓冲区的长度

[ 本帖最后由 simhare 于 2009-7-3 09:32 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP