Я просто добавлю то, чего не хватает в других ответах.
См. другие ответы
В программе ничего нельзя сделать, но есть кое-что, что можно сделать в оболочке при запуске программы.
Вам нужно использовать кавычки. Поэтому вместо
./myprog aaa bbb
вам нужно сделать одно из этих
./myprog " aaa bbb"
./myprog ' aaa bbb'
Это передаст программе один аргумент со всеми пробелами. Между ними есть разница: второй буквальный, точно такая же строка, как она выглядит (, за исключением того, что '
нужно набирать как\'
). Первый интерпретирует некоторые символы, но разделяется на несколько аргументов. См. цитирование оболочки для получения дополнительной информации. Так что не надо переписывать оболочку, конструкторы оболочки уже об этом подумали. Однако, поскольку теперь это один аргумент, вам придется делать больше передач внутри программы.
Передать данные через стандартный ввод. Это обычный способ передать большие объемы данных в команду. например.
./myprog << EOF
aaa bbb
EOF
или
./myprog
Tell me what you want to tell me:
aaaa bbb
ctrl-d
(Курсивом выводится программа)