Buenas coders.
He decidido crear un post en el que hiré recopilando mis samples de C. Los samples son el código fuente de un programa para que un coder pueda leerlo, entenderlo y aprender. Están todos comentados por mí de manera clara e intentando que se entienda.
Por lo tanto tan solo los teneis que compilar y ejecutar para ver el resultado. Para compilar un código fuente C en Linux se hace con este comando (tomando de ejemplo el 'Hola mundo'):
gcc -o "Hola mundo" "Hola mundo.c"
Y se ejecuta así (estando ya en la carpeta que contiene el 'Hola mundo'):
./"Hola mundo"
ÍNDICE
1. Hola mundo
// ----------------------- // Hola mundo.c // ----------------------- // By TheTooxicoo // ----------------------- // TheTooxicoohotmail [dot] com // ----------------------- #include <stdio.h> // Incluimos la librería 'stdio' int main() // Declaramos el bucle principal 'main' { // Iniciamos la definición printf( "Hola mundo\n" ); // Imprimimos un string return 0; // Hacemos que la función retorne '0' (cero) } // Cerramos la definición
2. Introducir edad
// ----------------------- // Introducir edad.c // ----------------------- // By TheTooxicoo // ----------------------- // TheTooxicoohotmail [dot] com // ----------------------- #include <stdio.h> int main() { int edad; // La edad debe ser un número entero printf( "Introduce tu edad: " ); scanf( "%i", &edad ); printf( "Tienes %i años.\n", edad ); return 0; }
3. Introducir altura
// ----------------------- // Introducir altura.c // ----------------------- // By TheTooxicoo // ----------------------- // TheTooxicoohotmail [dot] com // ----------------------- #include <stdio.h> int main() { float altura; // La altura es un número con decimales printf( "Introduce tu altura (en metros): " ); scanf( "%f", &altura ); printf( "Mides %.2f metros.\n", altura ); // Imprimimos la altura mostrando 2 decimales (%.2f) return 0; }
4. Introducir nombre
// ----------------------- // Introducir nombre.c // ----------------------- // By TheTooxicoo // ----------------------- // TheTooxicoohotmail [dot] com // ----------------------- #include <stdio.h> int main() { char nombre[15]; printf( "Introduce tu nombre: " ); scanf( "%s", nombre ); // Como es un array no hay que poner '&' printf( "Te llamas %s.\n", nombre ); return 0; }
5. Introducir nombre. edad y altura
// ---------------------------------- // Introducir nombre, edad y altura.c // ---------------------------------- // By TheTooxicoo // ---------------------------------- // TheTooxicoohotmail [dot] com // ---------------------------------- #include <stdio.h> int main() { char nombre[15]; int edad; float altura; printf( "Introduce los datos:\n" ); printf( " - Nombre: " ); scanf( "%s", nombre ); printf( " - Edad: " ); scanf( "%i", &edad ); printf( " - Altura(m): " ); scanf( "%f", &altura ); printf( "Te llamas %s, tienes %i años y mides %.2fm.\n", nombre, edad, altura ); return 0; }
6. Introducir 3 datos separados por espacios
// ------------------------------------------- // Introducir 3 datos separados por espacios.c // ------------------------------------------- // By TheTooxicoo // ------------------------------------------- // TheTooxicoohotmail [dot] com // ------------------------------------------- #include <stdio.h> int main() { int a, b, c; printf( "Introduce 3 números enteros separados por espacios: " ); scanf( "%i %i %i", &a, &b, &c ); printf( "Datos introducidos:\n" ); printf( " > 1ero: %i\n", a ); printf( " > 2ndo: %i\n", b ); printf( " > 3ero: %i\n", c ); return 0; }
7. Pirámide de números
// ----------------------- // Pirámide de números.c // ----------------------- // By TheTooxicoo // ----------------------- // TheTooxicoohotmail [dot] com // ----------------------- #include <stdio.h> int main() { int pisos, i, j; printf( "Números de pisos de la pirámide: " ); scanf( "%i", &pisos ); for( i=1; i<=pisos; i++ ) { for( j=1; j<=i; j++ ) { printf( "%i ", j ); } printf( "\n" ); } return 0; }
8. Manejo de ficheros
// ----------------------------------------- // Manejo de archivos.c // ----------------------------------------- // By TheTooxicoo // ----------------------------------------- // TheTooxicoohotmail [dot] com // ----------------------------------------- #include <stdio.h> #include <stdlib.h> void leer_archivo( char ruta[30] ) // Le damos 30 caracteres para la ruta (este valor puede variar). { FILE *archivo; char caracter; archivo = fopen( ruta, "r" ); // Abrimos el archivo en modo lectura ("r"). if( archivo == NULL ) // Si el archivo no existe se muestra un error. { printf( "Error de apertura del archivo.\n" ); } else // Si el archivo existe se muestra en pantalla. { printf( "El contenido del archivo es:\n" ); while( feof( archivo ) == 0 ) // Mientras no se llegue al caracter de fin de archivo (EOF) leer caracter a caracter. { caracter = fgetc( archivo ); printf( "%c", caracter ); } } fclose( archivo ); // Muy importante cerrar el archivo al acabar de usarlo. } int main( ) // Ejemplo de como utilizar esta función. { leer_archivo( "prueba" ); // En este caso el archivo se llama 'prueba' y está en la carpeta del ejecutable return 0; }
Actualización del post
Actualización del post (sáb, 30 de junio):
Espero que os sea de ayuda :D
// ----------------------- //
¿Sólo con esto ya funcionaría?
Muchas gracias y buen post
Si lo compilas funciona
No entiendo muy bien a qué te refieres...
Si compilas ese código tal y como esta te dará un ejecutable correcto.
Siento no explicarme bien, me
Siento no explicarme bien, me refiero a que si imprimiria el nombre en una pantalla sin cerrarse y habría que cerrarla manualmente. Lo digo que yo vengo de Lua y como no veo while true do no se si se cerraria cuando mostrase eso en pantalla...
Gracias
No hace falta.
Con C y en Linux no es necesario, el programa no se cierra solo.
pon debajo de printf(""); un
pon debajo de printf("");
un sistem("PAUSE");
Eso será en Windows y
Eso será en Windows y añadiendo las librerías pertinentes.
En Linux está de más hacer eso.
¿Has compilado y probado?
En Windows si necesitas poner
En Windows si necesitas poner system("PAUSE") si no no va, por eso lo decia muchas gracias
getchar
la función getchar también sirve y es estándar (buscad siempre las funciones estándar puede ayudar mucho a encontrar mas respuestas en la red y facilita portar el código a otros sistemas).
La verdad, si vas a programar
La verdad, si vas a programar en C te recomiendo que lo hagas en Linux. Cualquier programador con dos dedos de frente te dirá lo mismo.
¿Algún IDE me recomiendas
¿Algún IDE me recomiendas Tooxicoo?
Más que un IDE te recomiendo
Más que un IDE te recomiendo utilizar un editor de textos avanzado. Yo uso Kate y estoy contentísimo. Para compilarlo hago como te he puesto al principio del post.
Si aún así prefieres utilizar un IDE te recomendaría Code::Blocks.
De todos modos si no estás satisfecho con ninguno de ellos vete probando diferentes y si no los quieres los desinstalas con un:
Así de facil :D
Vale, al finatl me instalo el
Vale, al finatl me instalo el Slax pero quiero tener los dos. ¿Sabes si se puede hacer eso?
Muchas gracias
Por supuesto. Es un programa
Por supuesto. Es un programa más y puedes tener los que quieras.
Para instalar Kate:
Y listo :D
Pero sudo apt-get install
Pero sudo apt-get install kate
funciona en Slax? Pensaba yo que era solo para Ubuntu
Confusión mía
Perdona jaja pensé que Slax sería un editor de texto no una distro de Linux xD
Prueba a ver, no pierdes nada.
Buenas
Pues no estoy deacuerdo contigo, no sé por qué se le tiene tanta manía a Windows... Existen alternativas multiplataforma (como Code::Blocks), para evitar estas discusiones absurdas.
Un saludo.
¡Visca el Barça y Viva España!
Pues porque...
Bueno, estas son unas pocas razones.
Saludos.
Sí
Esas son tus razones para usarlo, no las razones por las que todos tengamos que hacerlo. No me parece que para ser un "programador con dos dedos de frente", haga falta usar linux y ser anti-windows, eso es a lo que yo me refiero. Que cada uno use el que le guste (Por eso uso Win 7, Ubuntu 12.04 y Mac OS X Lion), no hay más. Un saludo, no me tomes a mal :P.
¡Visca el Barça y Viva España!
En ningún momento he dicho
En ningún momento he dicho que halla que ser anti-windows aunque la verdad, yo no veo lógico que un programador (ojo un programador, no un usuario de windows que no programa) escoja un sistema que no le ofrece seguridad y que no puede moldear a su gusto.
De todos modos siempre hay excepciones y está claro que esta vez tu eres la excepción. Y si no pregunta en esta web por ejemplo cuantos coders utilizan habitualmente cualquier distribución de Linux.
Saludos.
No solo tiene que ver la
No solo tiene que ver la seguridad, puesto que eso siempre va de tu parte, nunca del sistema, almenos no en tu propio programa. Yo soy programador de C, C++, C#, Java, PHP, VB y ASM y en muchos de ellos elijo Windows, principalmente por la facilidad que tiene, por ejemplo C#, para programar en comparación con otros. Las APIs de Windows son bastante eficientes y siempre que te haga falta hacer algo multiplataforma tiras de C/C++ y librerías open source multiplataforma, nada de un programador con dos dedos de frente usaría Linux, es la afirmación más estúpida que he oído y que espero no volver a oir. Que tu prefieras Linux no quiere decir que los demás lo hagan.
Ya pero mi ordenador es una
Ya pero mi ordenador es una castaña xD y no le va Ubuntu, OpenSUSE le va a trompicones a veces funciona a veces no... El único que me falta por probar es Fedora, pero me da a mi que no va a funcionar...
No es por discrepar
pero con un pentium 4 a 1GHZ y 512 mb de ram ya tienes linux de sobra, instalate Xubuntu.
Dioni en serio, cuando digo
Dioni en serio, cuando digo que es una castaña es porque lo es xD, si te digo que no llega ni al Ghz y es pentium III...
... Sigo diciendo que tienes solucion:
http://www.taringa.net/posts/linux/2809213/Distros-Linux-par...
http://www.slax.org/
http://puppylinux.org/
Existen miles de distros de linux muy livianas.
Muchas gracias Dioni lo
Muchas gracias Dioni lo miraré. Otro de los problemas de pasarme a Linux es:
¿Tiene algo como Camtasia Studio? ¿PMF Creator puede correrlo? Es que yo hago Gameboots para la PSP y al menos que haya...
Como veo que vas a usar slax
Usalo en un pen el Slax o instalalo como mejor veas.
Usa wine para usar programas que no existan para linux como pmf creator, pero cantasia para que sirve?
No, Camtasia 7 o cualquier
No, Camtasia 7 o cualquier editor de video. Y usare Slax en un pen y me quedare con Windows para los juegos.
;)
Si supongo que si tiene que haber un editor de video
Juegos, que juegos puedes correr con ese ordenador? O.O
Simpsons Hit&Run y así
Simpsons Hit&Run y así rememorar las partidas en la PS2, Imperium, Age of Empires, etc. Sobre todo los juegos del 2003.
Prueba con debian con lxde o
Prueba con debian con lxde o xfce
http://cdimage.debian.org/cdimage/weekly-builds/i386/iso-cd/...
Haz como yo. Consiguete el
Haz como yo. Consiguete el Wubi y metete el Xubuntu. Mucho más ligero que Ubuntu i exactamente igual de funcional ;)
Además si lo quieres desinstalar simplemente como si fuera cualquier otro programa :D
Wubi no esta mal para
Wubi no esta mal para probarlo pero lo mejor es k lo instale de verdad aparte como mucho puedes poner el disco duro virtual de 30 gb
Instalarlo de verdad puede
Instalarlo de verdad puede traer muchos problemas (a mí me ha traido muchos) a menos que controles al 100% el tema de las particiones (cosa que yo no controlo).
¿Acaso te falta espacio con 30gb? (que se pueden ampliar mucho más por cierto)
El resultado va a ser similar.
Pero creo la potencia
No es la misma, lei por ahi que al no hacer la particion no es 100% igual que si lo hicieras en particion.
Eso es verdad funciona mas
Eso es verdad funciona mas lento con wubi te recomiendo k lo instales directamente aparte lo de las particiones tampoco es tan dificil
Probaré Wubi. Gracias
Probaré Wubi.
Gracias