【问题标题】:My C program won't converted int to char into mqtt broker message by execvp我的 C 程序不会通过 execvp 将 int 转换为 char 到 mqtt 代理消息
【发布时间】:2017-03-29 00:59:24
【问题描述】:

execvp 不接受我从 int 到 char 的转换。它不会在我的 bash 中写入任何文本。但如果我声明 -> Data = "134";有用。似乎转换是一个问题,并且该函数承认这一点。

我该如何解决这个问题?最后,我想将我的数字值发送到 str 所在的位置。

int set1 = 134;
int set2 = 2;
int set3 = 3;

char *Data;
Data = (char) set1;

char *str[80];
strcpy(str, "some,");
strcat(str, "text,");
strcat(str, Data);

char *name[] = {
    "mosquitto_pub",
    "-d",
    "-t",
    "SomeName",
    "-m",
    str,
    NULL
};
execvp(name[0], name);

【问题讨论】:

  • execvp的返回值是多少?你的errno 有变化吗?
  • 不要使用演员表。
  • man sprintf 是你的朋友
  • @KerrekSB 为什么?有什么特别的原因吗? cprogramming.com/tutorial/c/lesson11.html
  • @Dai 我不知道。我怎样才能检查它?我从小就开始这个功能,因为我的程序的其余部分必须继续。如果我只是在我的主程序中创建了该函数,那么该执行将结束调用它的进程。

标签: c char int


【解决方案1】:
int set1 = 134;
int set2 = 2;
int set3 = 3;

char con[80];
char *Data;
sprintf(con, "%d", set1); /*Thanks to hardillb*/
Data = con;    

char *str[80];
strcpy(str, "some,");
strcat(str, "text,");
strcat(str, Data);

char *name[] = {
    "mosquitto_pub",
    "-d",
    "-t",
    "SomeName",
    "-m",
    str,
    NULL
};
execvp(name[0], name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 2015-12-18
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多