Как мне создать несколько столбцов на C для моего кода

#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);
    }
}
 

https://godbolt.org/z/czc17q