1://处理文本框(内容是一个连续的字符串)的方法(不能直接用文本框的内容去传参,
//否则会有意想不到的错误发生,需要利用先拷贝到数组,然后利用数组去传参),
#include <QStringList>
#include <QString>
int argc = 0;
int i = 0;
char *argv[10]={NULL};
QString str;
QStringList strList;
char argv_buf[1024]={0};
int buf_len = 0;
str = ui->can_file->text(); //获取单行输入框的内容
strList= str.split(" ",QString::SkipEmptyParts);将单行输入框的内容按空格进行切割,并且去除多余空格,返回值是字符串列表
str = strList[0];
strncpy(&argv_buf[buf_len],str.toStdString().c_str(),strlen(str.toStdString().c_str())); //将str转化为C标准字符串,并且拷贝给数组,
argv[1]=&argv_buf[buf_len]; //让指针去指向这个数组
buf_len += strlen(str.toStdString().c_str());
argv_buf[buf_len] = '\0';
buf_len+=1;
。。。。。。
argv[argc] = NULL;
canconfig_main(argc, argv,ui); //传参调用canconfig_main函数
//处理文本框(内容是不连续的字符串)的方法(不能直接用文本框的内容去传参,
//否则会有意想不到的错误发生,需要利用先拷贝到数组,然后利用数组去传参),
bzero(argv_buf,1024);
str = ui->can_con_cmd->text();
strList= str.split(" ",QString::SkipEmptyParts);
argc = strList.count();
for(i = 0;i<argc;i++)
{
str = strList[i];
strncpy(&argv_buf[buf_len],str.toStdString().c_str(),strlen(str.toStdString().c_str()));
argv[i]=&argv_buf[buf_len];
buf_len += strlen(str.toStdString().c_str());
argv_buf[buf_len] = '\0';
buf_len+=1;
}
argv[argc] = NULL;
canconfig_main(argc, argv,ui); //传参调用canconfig_main函数
}