Сформировать символьную строку, скопировав в нее всё принятые из командной строки аргументы - C (СИ)
Формулировка задачи:
Сформировать символьную строку, скопировав в нее всё принятые из командной строки аргументы, при этом каждое число заключить в круглые скобки.
Заранее благодарен за помощь.
Решение задачи: «Сформировать символьную строку, скопировав в нее всё принятые из командной строки аргументы»
textual
Листинг программы
#include <stdio.h>
int main(int argc, char* argv[])
{
char result[1024];
char* presult = result, * str;
int i;
for (i = 1; i < argc; ++i) {
for (str = argv[i]; *str; ++str) {
if (('0' <= *str) && (*str <= '9')) {
sprintf(presult, "(%c)", *str);
presult += 3;
}
else {
*presult++ = *str;
}
}
}
*presult = 0;
printf("%s\n", result);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
resultиpresult. Первая для хранения результата, вторая для хранения указателя на первый символ результата. - Инициализируется счётчик
iдля первого цикла, который будет перебирать все аргументы командной строки, начиная со второго (не включая нулевой аргумент, который содержит имя программы). - Задаются начальные значения
strиpresult. - В первой ветке цикла перебираются все аргументы командной строки.
- Во второй ветке цикла перебираются все символы текущего аргумента.
- Если текущий символ является числом (в диапазоне от '0' до '9'), то он добавляется в результат, предварительно обернутый в скобки.
- Если текущий символ не является числом, то он просто добавляется в результат.
- После окончания второго цикла, значение
presultобнуляется, чтобы указать на первый символ результата. - Результат выводится на экран.
- Программа возвращает 0, что означает успешное завершение работы.