Ejercicio
Conversor De C A C#
Objectivo
Cree un programa para convertir programas de C simples, como el siguiente, a C#:
Nota: el programa resultante debe compilar correctamente. Pruébelo con otros programas C similares.
Ejemplo Ejercicio C#
Mostrar Código C#
// Import necessary namespaces
using System; // System namespace for basic input/output and file handling
using System.IO; // File handling functions (read/write)
using System.Text.RegularExpressions; // Regex operations for pattern matching and replacements
class CToCSharpConverter // Define the CToCSharpConverter class that will handle the conversion
{
static void Main(string[] args) // Entry point of the program
{
// Ensure the user has provided a file to convert
if (args.Length != 1) // Check if no file path is provided
{
Console.WriteLine("Usage: CToCSharpConverter "); // Inform the user about the correct usage
return; // Exit the program if the file argument is missing
}
string inputFilePath = args[0]; // Store the input file path provided by the user
// Check if the provided file exists
if (!File.Exists(inputFilePath)) // Check if the input file doesn't exist
{
Console.WriteLine("Error: The C file does not exist."); // Notify the user about the missing file
return; // Exit the program if the file does not exist
}
try
{
// Read the contents of the C file
string cCode = File.ReadAllText(inputFilePath); // Read the entire content of the input file
// Convert the C code to C# by applying transformations
string cSharpCode = ConvertCToCSharp(cCode); // Call the method to convert C code to C#
// Generate the C# file path (changing the file extension from .c to .cs)
string outputFilePath = Path.ChangeExtension(inputFilePath, ".cs"); // Modify the file path to have a .cs extension
// Write the converted C# code to the output file
File.WriteAllText(outputFilePath, cSharpCode); // Save the converted C# code into a new file
Console.WriteLine($"Conversion complete. C# code saved to {outputFilePath}"); // Inform the user about the successful conversion
}
catch (Exception ex) // Catch any exceptions that occur during the file reading or writing process
{
Console.WriteLine($"An error occurred: {ex.Message}"); // Print the error message if something goes wrong
}
}
static string ConvertCToCSharp(string cCode) // Method to convert C code to C# code
{
// Convert includes to C# using 'using' keyword
cCode = Regex.Replace(cCode, @"#include\s+<([^>]+)>", "using $1;"); // Replace #include statements with C# using statements
// Convert 'int main()' to 'static void Main()' for the entry point
cCode = Regex.Replace(cCode, @"\bint\s+main\s*\(\)\s*{", "static void Main() {"); // Change C's main to C#'s static Main
// Convert 'printf' to 'Console.WriteLine'
cCode = Regex.Replace(cCode, @"printf\s*\(([^)]+)\);", "Console.WriteLine($1);"); // Replace printf statements with Console.WriteLine
// Handle 'return 0;' to remove it as it's not needed in C#
cCode = Regex.Replace(cCode, @"\breturn\s+0\s*;", ""); // Remove return 0; as it is not necessary in C#
// Add 'using System;' at the beginning for Console.WriteLine
if (!cCode.Contains("using System;")) // Check if the using System; statement is already included
{
cCode = "using System;\n\n" + cCode; // Add 'using System;' at the start of the code if it's missing
}
// Handle other basic conversions (e.g., char to string, int to int, etc.)
// For now, let's just handle basic `printf` to `Console.WriteLine` and main conversion.
return cCode; // Return the converted C# code
}
}
Salida
Command-Line Example:
CToCSharpConverter example.c
Conversion complete. C# code saved to example.cs
Código de Ejemplo Copiado!
Comparte este Ejercicio C# Sharp
¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.
Este ejercicio consiste en crear un programa que divida un archivo (de cualquier tipo) en partes de un tamaño específico. El programa debe recibir como parámetros el nombre ...
Este ejercicio consiste en crear un programa que encripte y desencripte un archivo de imagen BMP cambiando la marca "BM" en los primeros dos bytes a "MB" y viceversa. Para e...
Este ejercicio consiste en crear un programa que lea un archivo CSV con cuatro bloques de datos separados por comas (tres de texto y uno numérico) y genere un archivo de tex...
Este ejercicio consiste en crear un programa en C# que determine si dos archivos (de cualquier tipo) son idénticos, es decir, si tienen el mismo contenido. El ...
Este ejercicio consiste en crear un programa en C# que decodifique un archivo de imagen en formato Netpbm (en particular, el formato P1, que es para imá...
Este ejercicio consiste en crear un programa en C# que verifique si un archivo es una imagen en formato PCX y, si es así, extraiga y muestre las dimensiones (a...