我编写了一个 TCP 套接字客户端程序,它允许用户输入 IP、端口和消息作为参数。
它像是:
./a.out 127.0.0.1 555 test message
我的问题是,如何将“测试”(argv[3])和“消息”(argv[4])等组合成一个char *message?
你想要做的实际上是这样的:
/a.out 127.0.0.1 555 "test message"
通过在消息周围加上引号,argv[3] 将包含完整的消息。然后,您不必费心将参数连接在一起。
您必须获得argv要组合的字符串的长度。创建一个该大小的 char 数组,然后使用strcpy(最好是安全版本)复制字符串。
您可以使用strlen来获取字符串的长度,然后分配适当大小的缓冲区并使用sprintf或strcpy用格式化数据填充它。
但正如 Kurtis 所说,如果您只想将一个包含空格的字符串传递给您的程序,那么这是 shell 的问题,而不是您的程序。在 Unix 上,您应该使用单引号 ( '),而在 Windows 上,您可以使用双引号 ( ")。