1

我编写了一个 TCP 套接字客户端程序,它允许用户输入 IP、端口和消息作为参数。

它像是:

./a.out 127.0.0.1 555 test message

我的问题是,如何将“测试”(argv[3])和“消息”(argv[4])等组合成一个char *message

4

3 回答 3

9

你想要做的实际上是这样的:

/a.out 127.0.0.1 555 "test message"

通过在消息周围加上引号,argv[3] 将包含完整的消息。然后,您不必费心将参数连接在一起。

于 2011-10-13T19:28:18.307 回答
1

您必须获得argv要组合的字符串的长度。创建一个该大小的 char 数组,然后使用strcpy(最好是安全版本)复制字符串。

于 2011-10-13T19:23:22.910 回答
0

您可以使用strlen来获取字符串的长度,然后分配适当大小的缓冲区并使用sprintfstrcpy用格式化数据填充它。

但正如 Kurtis 所说,如果您只想将一个包含空格的字符串传递给您的程序,那么这是 shell 的问题,而不是您的程序。在 Unix 上,您应该使用单引号 ( '),而在 Windows 上,您可以使用双引号 ( ")。

于 2011-10-13T19:29:49.103 回答