在连接字符串时能够使用哪些函数?

n

组态注意事项
通常C函数在参考书中有所描述。以下是一些能够在 WinCC 函数和动作中使用的 C 语言样例函数。

编号. 描述
1 使用“ strcpy ”命令拷贝字符串
在此例中变量“ Varname ”的值被复制到 C 变量“ a ”中。 n

char*pszValue= NULL;

char a[50];

pszValue = GetTagChar("Varname");

// 与 ZERO 指针比较
if(pszValue !=ZERO)

// 进一步处理将变量值拷贝到 C 变量“ a ”中。
// 限于49个字符,因为 pszValue 指向一个字符数组
// 它的大小是不确定的因而能够包含多于
// 49个字符。
// 不加限制可能导致溢出。
strncpy(a, pszValue, 49);

2使用“ strcmp ”命令比较字符串
两个字符串比较用“ strcmp ”命令。在此例中,在 if 语句中检查字符串“ abcdefgh ”是否在 C 变量“ a ”中。如果是,那么变量“ TEST ”的数值被设置为“ 100 ”。 n

char*pszValue= ZERO;

char a[50];

pszValue = GetTagChar("Varname");

if(pszValue !=ZERO)

// 进一步处理将变量值拷贝到 C 变量“ a ”中。
// 限于49个字符,因为 pszValue 指向一个字符数组
// 它的大小是不确定的因而能够包含多于
// 49个字符。
// 不加限制可能导致溢出。
strncpy(a, pszValue, 49);

if (!strcmp("abcdefgh", a))

SetTagWord("TEST", 100);

3使用“ strcat ”命令连接字符串
在此例中字符串“ _Extension ”被附加到 C 变量“ a ”中。因此,例如如果使用“ strcpy ”命令将字符串“ Test ”写入到 C 变量“ a ”中,那么使用“ strcat ”命令后 C 变量“ a ”的值将变为“ Test_Extension ”。 n

char*pszValue= NULL;

char a[250];

pszValue = GetTagChar("Varname");

if(pszValue !=NULL)

strncpy(a, pszValue, 249-12);
// 249-12 对应于 249 strlen("_Extension");

strcat(a, "_Extension");

SetTagChar("Variable name", a);

4使用“ sprintf ”命令将变量值转换为字符串
一个数值被读取到变量“ tag ”中然后使用“ sprintf ”命令写入或附加到字符类型的 C 变量中。

int tag;

char a[250];

tag = GetTagWord("Variable_Tag");

sprintf(a,"Tomorrow is the %d",tag);

/* 数值从 C 变量(整型)“ tag ”被附加到 C 变量(字符)“ a ”中 */

警告
函数 strcpy() 将“ Source ” 指针指向包含结束字符‘ 0 ’的字符串复制到“ Target ”指针指向的位置。字符串一定不能重叠而且一定要足够大(源字符串长度 + 1 因为包含 '0')。
函数 strncpy() 的区别在于仅拷贝“ Source ”的前 n 个字节。如果在前 n 个字节中没有‘ 0’,那么结果不会以‘ 0’结束。这能够导致为定义的系统状态。

对于字符串的处理也可参考条目号: 7929092

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc330222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论