#c #formatting
#c #форматирование
Вопрос:
В настоящее время я пытаюсь создать программу на C:
Во-первых, заставьте ваш фильтр печатать все входные числа в одном столбце с их десятичными точками в ряд (и все 13 цифр точности).
Во-вторых, создайте три столбца выходных данных (с выстроенными в ряд десятичными точками). Обязательно примите во внимание, что в последней строке не обязательно должно быть три столбца.
В-третьих, пусть аргумент командной строки определяет количество столбцов.
В-четвертых, пусть переменная среды определяет количество столбцов.
В-пятых, пусть аргумент командной строки или переменная среды определяют точность выходных чисел.
Наконец, проверьте файл конфигурации (перед проверкой переменных среды и аргументов командной строки) и, если он завершится, его значения переопределят значения по умолчанию.
Пока у меня есть это, я пытаюсь выполнить шаги 2-4, но у меня возникают проблемы с созданием нескольких столбцов. Затем мне нужно было бы создать переменные # столбца, чтобы их можно было изменять с помощью командной строки или переменной среды. По умолчанию столбцов должно быть 3.
Мой код:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
// Set the default value.
int incBy = 0; here
// Override the default value with a value from the configuration file.
FILE *fp;
if ((fp = fopen("incrementor.cfg", "r")) != NULL)
{
fscanf(fp, "%d", amp;incBy);
}
// Override the default value with an environment variable value.
char * op;
if ((op = getenv("GET_COLUMNS")) != NULL)
{
//get an operand from the environment
incBy = atoi(op);
}
//Get a command line argument (if it exists)
if (argc > 1) {
//get an operand from the command line
incBy = atoi(argv[1]);
}
//Process the stream of input numbers.
double x;
while (scanf("%lf", amp;x) != EOF) {
printf(".13fn", (x incBy));
}
return 0;
}
Комментарии:
1. 🚫📸 Пожалуйста, размещайте код, ошибки, образцы данных или текстовые выходные данные здесь в виде обычного текста, а не в виде изображений, которые могут быть трудночитаемыми, не могут быть скопированы и вставлены для облегчения тестирования кода или использования в ответах и являются препятствием для тех, кто зависит от программ чтения с экрана или инструментов перевода. Вы можете отредактировать свой вопрос, чтобы добавить код в текст вашего вопроса. Для упрощения форматирования используйте
{}
кнопку, чтобы отмечать блоки кода, или отступ с четырьмя пробелами для того же эффекта. Содержимое скриншота нельзя найти, запустить как код или скопировать и отредактировать для создания решения.2. Исправлено, извините
3.
(
Вместо a{
послеif ((fp=....
строки.4. Предполагая, что нет синтаксических ошибок… Вы могли бы создать 3 столбца, печатая только символ ‘ n’ каждую 3-ю итерацию в цикле while. Замените 3 на ваш столбец var после того, как вы заработаете, и все должно быть в порядке.
Ответ №1:
void printdoubles(FILE *fo, const char *fmt, const double *arr, size_t size, size_t ncolumns)
{
for(size_t index = 0; index < size; index )
{
fprintf(!fo ? stdout : fo, fmt, arr[index]);
fputc(((index 1) % ncolumns) ? 't' : 'n', !fo ? stdout : fo);
}
}