как объединить несколько * argv в сообщение типа char * - PullRequest
1 голос
/ 13 октября 2011

Я написал клиентскую программу с сокетом TCP, которая позволяет пользователю вводить IP, порт и сообщение в качестве аргументов.

Это как:

./a.out 127.0.0.1 555 test message

У меня вопрос, как объединить «test» (argv[3]) и «message» (argv[4]) и многое другое в char *message?

Ответы [ 3 ]

9 голосов
/ 13 октября 2011

На самом деле вы хотите сделать следующее:

/a.out 127.0.0.1 555 "test message"

Поместив в кавычки сообщение, argv [3] будет содержать полное сообщение.Тогда вам не нужно связывать аргументы вместе.

1 голос
/ 13 октября 2011

Вы должны получить длину ваших argv строк, которые вы хотите объединить. Создайте массив символов такого размера, а затем скопируйте строки, используя strcpy (предпочтительно безопасную версию).

0 голосов
/ 13 октября 2011

Вы можете использовать strlen, чтобы получить длины строк, затем выделить буфер соответствующего размера и использовать sprintf или strcpy, чтобы заполнить его вашими отформатированными данными.

Но какКуртис говорит, что если все, что вам нужно, это передать строку с пробелами в вашу программу, то это проблема оболочки, а не вашей программы.В Unix вы должны использовать одинарные кавычки ('), а в Windows вы можете использовать двойные кавычки (").

...