我编写了一个 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 上,您可以使用双引号 ( "
)。