Функция не записывает ввод ReadLine() в файл

Я делаю помощник для удовольствия и решил закодировать его на C#. Это работает следующим образом:

Пользователю предлагается, сколько библиотек он хочет включить
Библиотеки добавляются в List<string>
Пользователя спрашивают, хотят ли они включить main функцию
Функция main работает, а включения нет. Вот мой код:

Для функции, которая записывает в файл:

static void CStart(string fileName, List<string> libraries, bool mainMethod)
{
    string final = "";
    string includes = "";
    foreach (string s in libraries)
    {
        includes += $"#include <{s}>\n";
    }
    includes += "\n";
    final += includes;
    if (mainMethod)
    {
        final += "int main(int argc, const char* argv[])\n{\n\t\n}";
    }
    File.WriteAllText(fileName, final);
}

И основная функция:

static void Main(string[] args)
{
    while (true)
    {
        for (int i = 0; i < 100; i++)
        {
            Console.WriteLine();
        }
        Console.WriteLine("Welcome to Programming Helper!\nSelect an option:\n");
        Console.WriteLine("1) Write a C file\n");
        Console.Write("Choice: ");
        string ipt0 = Console.ReadLine();
        if (ipt0 == "1")
        {
            Console.Write("Please select a file path: ");
            string filePath = Console.ReadLine();
            Console.Write("How many libraries would you like to include: ");
            string ipt = Console.ReadLine();
            List<string> libraries = new List<string>();
            if (ipt.All(Char.IsDigit))
            {
                int i = int.Parse(ipt);
                for (int j = 0; j < i; ++j)
                {
                    Console.Write("Write a library: ");
                    libraries.Append(Console.ReadLine());
                }
            }
            Console.Write("Would you like to generate a main function? [Yn]: ");
            string yn = Console.ReadLine();
            if (yn == "n" || yn == "N")
            {
                CStart(filePath, libraries, false);
            }
            else
            {
                CStart(filePath, libraries, true);
            }
        }
    }
}

Текст файла такой:


int main(int argc, const char argv[])
{

}

Я хочу, чтобы мой файл был:

#include <one of the libraries specified>
#include <one of the libraries specified>
#include <one of the libraries specified>
...

int main(int argc, const char* argv[])
{

}

Примечание. ... следует заменить другими библиотеками, которые необходимо включить.

На первый взгляд ваш код выглядит хорошо. Вы описали то, что ожидали, но что вместо этого наблюдали? Что входило?

Klaus Gütter 08.02.2023 14:48

@KlausGütter Ввод: 1, c:\users\...\test.c, 1, stdio.h, y

Notiq 08.02.2023 14:53

библиотеки.Append(ipt); Попробуй это.

AliK 08.02.2023 14:55

Должно быть libraries.Add, а не libraries.Append

Dmitry Bychenko 08.02.2023 14:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, у вас пустая libraries коллекция. Обратите внимание, что Append в

libraries.Append(Console.ReadLine());

— это метод расширения Linq, который создает новый IEnumerable<string>, который вы, в свою очередь, игнорируете. Вместо этого вы должны использовать Add:

libraries.Add(Console.ReadLine());

Другие вопросы по теме