Я делаю помощник для удовольствия и решил закодировать его на 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[])
{
}
Примечание. ...
следует заменить другими библиотеками, которые необходимо включить.
@KlausGütter Ввод: 1, c:\users\...\test.c, 1, stdio.h, y
библиотеки.Append(ipt); Попробуй это.
Должно быть libraries.Add
, а не libraries.Append
Что ж, у вас пустая libraries
коллекция. Обратите внимание, что Append
в
libraries.Append(Console.ReadLine());
— это метод расширения Linq, который создает новый IEnumerable<string>
, который вы, в свою очередь, игнорируете. Вместо этого вы должны использовать Add
:
libraries.Add(Console.ReadLine());
На первый взгляд ваш код выглядит хорошо. Вы описали то, что ожидали, но что вместо этого наблюдали? Что входило?