网站标志
导航菜单
当前日期时间
当前时间:
购物车
购物车中有 0 件商品 去结算 我的订单
商品搜索
商品搜索:
文章正文
wincc脚本C程序不循环
作者:管理员    发布于:2015-08-09 11:20:36    文字:【】【】【
 问:我在WINCC脚本编辑器里编写了如下一段C 程序,想把数组E[0][0]、E[0][1]、E[0][2]分别赋给a,b,c。然后再界面上显示出来。可是为什么只显示E[0][0]的值,其余两个的不显示呢?为什么FOR循环没有效果?求高手解答
 #include "apdefap.h"
 void xx_1()
 {
 
 
 
int n;
 float a,b,c;
 char str1[100]="NewTag_";
 char str[100];
 int row,line;
 float E[1][3];
 row=1;
 for(line=1;line<=3;line++)
 {
 n=row*10+line;
 sprintf(str,"%d",n);
 strcat(str1,str); //Return-Type: char*
 E[row-1][line-1]=GetTagFloat(str1); //Return-Type: float
 }
 
SetTagFloat("a",E[0][0]); //Return-Type: BOOL
 
SetTagFloat("b",E[0][1]); //Return-Type: BOOL
 
SetTagFloat("c",E[0][2]); //Return-Type: BOOL
 
}
 
问题补充:我其实是想做一个测试,看看可不可以用循环的办法 一次性把变量表里“NewTag_11”、“NewTag_12”、“NewTag_13”这三个变量的值赋给数组 E[0][2]的三个对应值。
 因为我需要把变量表里105个类似于“NewTag_11”变量的值赋给数组 E[7][15],如果可以循环赋值,就能大大减轻我的工作量。这个是模糊控制的隶属函数表,因为要求在线修改隶属度的值,所以只能是给每个隶属度都存一个变量。在模糊控制规则表的计算中要用到E[7][15]这个矩阵。
 
答:问题应该出在这句代码上:
 strcat(str1,str); //Return-Type: char*
 
 
 
FOR循环第一次执行时,STR1的值是NewTag_11,是有效的变量名,所以能取到正确的值。
 FOR循环第二次执行时,STR1的值不是NewTag_12,而是NewTag_1112,不是有效的变量名,所以不能取到正确的值。
 至于第三次循环执行时,得到的是NewTag_111213,而不是NewTag_13。
 
把这两段代码:
 sprintf(str,"%d",n);
 strcat(str1,str); //Return-Type: char*
 改为:
 sprintf(str1,"NewTag_%d",n);
 应该就可以解决问题。
浏览 (49) | 评论 (0) | 评分(0) | 支持(0) | 反对(0) | 发布人:管理员
将本文加入收藏夹
新闻详情
脚注栏目
|
脚注信息
机电工程网(C) 2015-2020 All Rights Reserved.    联系我们