MLGetByteSymbol (C 函数)
MLGetByteSymbol 已经被 WSGetByteSymbol 所取代.
int MLGetByteSymbol(MLINK link,const unsigned char **sp,int *len,long spec)
从由 link 指定的 MathLink 连接中获取一个对应于一个符号名称的字符字符串,把结果字符串存在 sp,字符数存在 len. 代码 spec 被用于 Mathematica 的字符代码大于255的任意字符.
更多信息
- MLGetByteSymbol() 为字符代码数组分配内存. 必须调用 MLReleaseByteSymbol() 释放该内存. 如果 MLGetByteSymbol() 失败并且函数的返回值表明一个错误,不要调用含有 sp 中的值的 WLReleaseByteSymbol().
- MLGetByteSymbol() 在没有出现特殊字符的情况下很方便.
- 由 MLGetByteSymbol() 使用的字符代码与由 Mathematica 中 ToCharacterCode 返回的完全一样.
- MLGetByteSymbol() 中的字符代码数组不是由零字符终止.
- 字符例如,换行符是由其原始字符代码指定,而不是 ASCII 的形式诸如 ∖n.
- MLGetByteSymbol() 返回不可变的数据.
- MLGetByteSymbol() 在错误事件中返回0,如果函数成功则返回非零值.
- 如果 MLGetByteSymbol() 失败,则使用 MLError() 检索错误代码.
- MLGetByteSymbol() 在 MathLink 的标头文件 mathlink.h 中被声明.
范例
基本范例 (1)
#include "mathlink.h"
/* read a symbol encoded with codes from ToCharacterCode[] from a link */
void f(MLINK lp)
{
const unsigned char *symbol;
int length;
if(! MLGetByteSymbol(lp, &symbol, &length, 0))
{
/* unable to read the byte-encoded symbol from lp */
return;
}
/* ... */
MLReleaseByteSymbol(lp, symbol, length);
}