HUAYI_BOOL TcpObtainServervalue(int count, ...) { char *resultbuf = malloc(1024); char cmd[TEMP_STR_LEN]; int counter = 0; va_list args; va_start(args, count); strcpy(cmd,"cat /tmp/returnValue"); do { if(counter>10) return HUAYI_FALSE; else if(counter) sleep(1); memset(resultbuf, 0, sizeof(resultbuf)); get_cmd_result(cmd, resultbuf, sizeof(resultbuf)); counter++; }while(! strlen(resultbuf)); for (int i = 0; i < count; i++) { char* str = va_arg(args, char*); //printf("%s\n", str); } va_end(args); unlink("/tmp/returnValue"); return HUAYI_TRUE; } char name1[128]; char name2[128]; char name3[128]; TcpObtainServervalue(name1,name2,name3); printf("%s,%s,%s",name1,name2,name3);
时间: 2024-04-09 11:32:57 浏览: 21
对于你提供的代码,有一些问题需要注意:
1. 在调用`TcpObtainServervalue`函数时,需要传递一个int类型的count参数,以及可变参数列表。但是在你的示例代码中,直接传递了三个字符数组`name1`、`name2`、`name3`作为参数,并没有传递count参数。所以需要修改代码以正确传递count参数。
2. 在函数内部使用`memset`和`sizeof`时,需要注意传递正确的参数。`sizeof(resultbuf)`应该改为`1024`,因为`resultbuf`是一个指针,所以使用`sizeof(resultbuf)`将得到指针的大小而不是缓冲区的大小。
下面是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#define TEMP_STR_LEN 256
#define HUAYI_BOOL int
#define HUAYI_TRUE 1
#define HUAYI_FALSE 0
HUAYI_BOOL TcpObtainServervalue(int count, ...)
{
char *resultbuf = malloc(1024);
char cmd[TEMP_STR_LEN];
int counter = 0;
va_list args;
va_start(args, count);
strcpy(cmd,"cat /tmp/returnValue");
do
{
if(counter>10)
return HUAYI_FALSE;
else if(counter)
sleep(1);
memset(resultbuf, 0, 1024);
//get_cmd_result(cmd, resultbuf, 1024);
counter++;
}while(! strlen(resultbuf));
for (int i = 0; i < count; i++)
{
char* str = va_arg(args, char*);
//printf("%s\n", str);
}
va_end(args);
unlink("/tmp/returnValue");
return HUAYI_TRUE;
}
int main()
{
char name1[128];
char name2[128];
char name3[128];
TcpObtainServervalue(3, name1, name2, name3);
printf("%s,%s,%s", name1, name2, name3);
return 0;
}
```
在上述代码中,我们在`main`函数中调用了`TcpObtainServervalue`函数,并传递了count参数以及三个字符数组作为可变参数。最后,通过`printf`打印了这三个字符数组的值。
请注意,由于无法运行你提供的`get_cmd_result`函数和调用外部命令`cat /tmp/returnValue`,所以在代码中将其注释掉了。你需要根据自己的实际情况进行修改。
希望这对你有所帮助!如果还有其他问题,请随时提问。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)