[TUTORIAL] Programando en C

1, 2, 3, 4, 5, 69
dracojcs escribió:Muchas gracias por el tuto, soy nuevo con esto del C, he programado algo en Visual Basic, pero hace mucho tiempo que no toco nada, y me he ido olvidando, soy un paquete, empiezo de cero!

Estoy intentado la función para... "Imaginarios que os viene un empresario y os dice que quiere una función tipo "int", con 2 parámetros int, que la función sume esos parámetros, y devuelva el resultado."
De la forma que esta planteado, parece que debe recoger los parámetros por teclado y sumarlos, le he intentado con este código pero da error:

# include <stdio.h>
# include <stdlib.h>

int main (){
   printf ("Escribe el valor del primer numero");
   int var1 = getchar ();
   printf ("Escribe el valor del segundo numero");
   int var2 = getchar ();
   int suma;
   suma = var1 + var2;
   char valorsuma [100];
   sprintf (valorsuma, "La suma de los dos numeros es: %d", suma);
   printf (valorsuma);
   system ("pause");
   return 0;
}


Como se usa getchar (), cual es el problema?
Otra dudilla, ya que estoy... como se escriben los caracteres acentuados y caracteres especiales? Es igual que en HTML, hace falta indicarle al Visual C++ el formato en las propiedades del proyecto, o algo así?

Gracias y saludos!


Aver creo que lo que quieres hacer es algo como esto solo que yo no me he complicado y he puesto printf para que muestre el resultado en pantalla osea todo muy simple jaja

#include <stdio.h>
#include <stdlib.h>
int main ()
{
   int numero, numero_2;
   
   printf ("Escribe el primer numero a sumar\n");
   scanf("%d", &numero);
   printf ("Escribe el segundo numero a sumar\n");
   scanf("%d", &numero_2);
   
   printf ("\nEl resultado de la suma es %d\n", numero+numero_2);
   
   
   system("pause");
   return 0;
}


Blipi muchisimas gracias por las explicaciones ojala pueda aprender a programar C con este turorial de una vez que ya va siendo hora jaja espero que no te dejes nada por explicar :)

1Saludo!
Si, continuaré el tutorial, pero mañana estoy de vuelta al cole y aun tengo que hacer todos los debes! =P
Además, estoy muy liado con el Free PStore, que ya casi está todo listo, solo falta hacer las descargas.
:O
Sin palabras :)

Hay que estar aburrido para hacer esto... un tutorial de C en EOL esta mas desubicado que una receta de cocina para la Thermomix (aunque no iria tan desubicado, en una seccion como la correspondiente)

El tema es que ni en 20 tutoriales podrias conseguir que alguien sin nociones hiciera algo medio interesante.
Take this easy: http://www.google.es/search?q=tutorial+de+c
MiSSigNNo escribió::O
Sin palabras :)

Hay que estar aburrido para hacer esto... un tutorial de C en EOL esta mas desubicado que una receta de cocina para la Thermomix (aunque no iria tan desubicado, en una seccion como la correspondiente)

El tema es que ni en 20 tutoriales podrias conseguir que alguien sin nociones hiciera algo medio interesante.
Take this easy: http://www.google.es/search?q=tutorial+de+c


¿Nociones como cuales? yo por ejemplo no tenia ni idea de c hace 1 año o así y de ver tutoriales al final logre hacerme una calculadora xD así que no se decirte de todas maneras al tutorial le falta bastante todavía.

1Saludo.
Gracias por hacer el tutorial. Se C pero de no usarlo día a día me olvide de varios comandos. A ver si me pongo un día de estos y lo retomo. :)
Pedazo tutorial, gracias por el aporte.
Hay cosas que no sabia y esto me ha venido de fabula.
MiSSigNNo escribió::O
Sin palabras :)

Hay que estar aburrido para hacer esto... un tutorial de C en EOL esta mas desubicado que una receta de cocina para la Thermomix (aunque no iria tan desubicado, en una seccion como la correspondiente)

El tema es que ni en 20 tutoriales podrias conseguir que alguien sin nociones hiciera algo medio interesante.
Take this easy: http://www.google.es/search?q=tutorial+de+c


Sinceramente, no se si tormarmelo a buenas o a malas esto que andas diciendo. Por favor, si tan desubicado crees que está, ilustranos tu con tus conocimientos sobre programación.
Este tutorial, ya trata las nociones, a no ser que por nociones tu entiendas encender y apagar el ordenador, pues esto no lo cubre el tutorial =)

Por favor, absteneros de comentarios, con perdón, estúpidos como el de arriba, que no aportan nada y se limitan a criticar de forma no constructiva.
Muchísimas gracias por el tutorial, me parece muy interesante... enhorabuena a su creador y espero que siga actualizándose.

1 saludo.
blipi escribió:
MiSSigNNo escribió::O
Sin palabras :)

Hay que estar aburrido para hacer esto... un tutorial de C en EOL esta mas desubicado que una receta de cocina para la Thermomix (aunque no iria tan desubicado, en una seccion como la correspondiente)

El tema es que ni en 20 tutoriales podrias conseguir que alguien sin nociones hiciera algo medio interesante.
Take this easy: http://www.google.es/search?q=tutorial+de+c


Sinceramente, no se si tormarmelo a buenas o a malas esto que andas diciendo. Por favor, si tan desubicado crees que está, ilustranos tu con tus conocimientos sobre programación.
Este tutorial, ya trata las nociones, a no ser que por nociones tu entiendas encender y apagar el ordenador, pues esto no lo cubre el tutorial =)

Por favor, absteneros de comentarios, con perdón, estúpidos como el de arriba, que no aportan nada y se limitan a criticar de forma no constructiva.

Tu nada tio. Ya sabemos que hay mil tutoriales por ahi y es un poco reinventar la rueda. El tiempo que te llevas en aclarar las dudas vale mas que mil palabras de desaliento.
Buen dia amigo blipi, gracias por tu exelente tutorial, he visto que se ha dicho que este tutorial no es generico, es decir, que esta orientado a la scene, mi pregunta es: No se nada de programacion como tal, pero tengo un poco de nocion de la gerga y del significado de algunos terminos, quisiera preguntarte si me puedo inicira con este tuto o ademas del tuyo con que mas me puedo apoyar?
Tranquilo que por mas que algunos se empeñen en que este tutorial no debería estar aquí, yo seguiré.

tidusmen escribió:Buen dia amigo blipi, gracias por tu exelente tutorial, he visto que se ha dicho que este tutorial no es generico, es decir, que esta orientado a la scene, mi pregunta es: No se nada de programacion como tal, pero tengo un poco de nocion de la gerga y del significado de algunos terminos, quisiera preguntarte si me puedo inicira con este tuto o ademas del tuyo con que mas me puedo apoyar?


Al revés, este tutorial está destinado a iniciación en programación y aprender hasta llegar a un buen nivel. Está claro que con solo leerlo no es suficiente, se debe probar y experimentar con lo que vas aprendido.
Apoyo, yo personalmente te recomiendo comprarte libros (no me gustan esas webs donde te lo explican a saco y te dejan tirado) y como ya he dicho, practicar. Si tienes dudas, yo encantado te responderé.

PD: El tema del Store ya va tirando a mucho más buen ritmo, de hecho, hoy mismo he conseguido firmarlo para cfw 3.55 y ya puedo probarlo en mi ps3. Pronto tendré una beta lista y podré volver a dedicar un poco más de tiempo a este tutorial.
blipi escribió:Tranquilo que por mas que algunos se empeñen en que este tutorial no debería estar aquí, yo seguiré.

tidusmen escribió:Buen dia amigo blipi, gracias por tu exelente tutorial, he visto que se ha dicho que este tutorial no es generico, es decir, que esta orientado a la scene, mi pregunta es: No se nada de programacion como tal, pero tengo un poco de nocion de la gerga y del significado de algunos terminos, quisiera preguntarte si me puedo inicira con este tuto o ademas del tuyo con que mas me puedo apoyar?


Al revés, este tutorial está destinado a iniciación en programación y aprender hasta llegar a un buen nivel. Está claro que con solo leerlo no es suficiente, se debe probar y experimentar con lo que vas aprendido.
Apoyo, yo personalmente te recomiendo comprarte libros (no me gustan esas webs donde te lo explican a saco y te dejan tirado) y como ya he dicho, practicar. Si tienes dudas, yo encantado te responderé.

PD: El tema del Store ya va tirando a mucho más buen ritmo, de hecho, hoy mismo he conseguido firmarlo para cfw 3.55 y ya puedo probarlo en mi ps3. Pronto tendré una beta lista y podré volver a dedicar un poco más de tiempo a este tutorial.



Ok amigo, gracias sigue adelante, estoy en el irc de eol y comente y muchos compañeros estan de acuerdo, asi que tu adelante, hay mismo voy a empezar poco a poco se que hay que ser constante para poder salir adelante, no basta solo con leer, es como aprender guitarra ^^ gracias amigo, cualquier duda no dudare en preguntarte
Hola, como ya he dicho en otro comentario muy buen tuto. Yo estoy por la parte del Hola Mundo. Por lo que parece debe ser mi visual basic c++ express 2010 que le pongo este código y me da errores de compilación:
   #include <stdio.h>
    int main(){
       char texto[] = "Hola Mundo";
       printf(texto);
       getchar();
       return 0;
    }

Es el código que tu dices que se tiene que poner no?
una cosa, cuando inicio el programa en vez de salirme la pantalla en blanco sale esto:
// ooooo.cpp: archivo de proyecto principal.
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hola a todos");
   ;return 0;
}
Esto me da bien pero sale muy rapido, así que le poní
getchar()
y me dice que no existe i
system ("pause")
tampoco

Hay alguna otra manera de que la consola de detenga?.
Y pàra acabar mis dudas, también me dice que
printf(texto)
no existe. Saludos [oki] [oki]

EDITO: Ya encontré la solución. Gracias aunque nadie me haya respondido xD
El le poní casi me deja ciego. Estas haciendo un proyecto para c++. Tienes que hacer uno para c.
MiSSigNNo escribió::O
Sin palabras :)

Hay que estar aburrido para hacer esto... un tutorial de C en EOL esta mas desubicado que una receta de cocina para la Thermomix (aunque no iria tan desubicado, en una seccion como la correspondiente)

El tema es que ni en 20 tutoriales podrias conseguir que alguien sin nociones hiciera algo medio interesante.
Take this easy: http://www.google.es/search?q=tutorial+de+c


Yo creo que aquí, lo unico que está desubicado es tu comentario ;)

Está claro que como dices, ni con 20 tutoriales vas a hacer algo medio interesante................. salvo que le pongas empeño. Pero no solo con este tema en concreto, sino cualquier otro.

Ya te digo yo, que si llegas a dominar completamente el lenguaje C, y dominar no me refiero a empollar como si de un libro de derecho se tratase, sino a practicar hasta la extenuidad, pues tienes bastante ganado por tu parte.
¿Por qué? Pues porque para llegar a dominar un primer lenguaje de programación (en este caso C, que dentro de los de alto nivel es de los de mas bajo nivel, valga la redundancia), practicando mucho por tu cuenta, habrás conseguido:

- Hacer algoritmos
- Escribir pseucodigo
- Aprender la sintaxis del C, y con ello ya te es muuuuuuuuuucho mas facil pasar a otros lenguajes, ya que C tiene muchas cosas afines a todos los demas lenguajes de programación, y que ya no te sonarán a chino posteriormente (ya sabrás declarar variables, sabras lo que son los bucles, if... y un largo etcetera).
- Nociones al menos basicas, de aspectos como conversiones de datos a HEX, Octal..., direcciones de memoria...

Vamos que empezar en esto aprendiendo un lenguaje de programacion como C, es sin duda alguna, el punto de partida para cualquiera que quiera programar.


Si te fijas, en las carreras de ingenieria informatica el primer curso y primer cuatrimestre siempre tienes la asignatura "Introduccion a la Programacion", donde normalmente empiezan enseñando C (junto con otras asignaturas de base matematica-informatica (analisis matematico, matematica discreta...)).
Luego en el segundo cuatrimestre, va un pelin mas allá con metodologia de la programacion y estructura de computadores (ya tocas lenguaje ensamblador).
En el segundo curso, va todavia mas allá, y te enseñan Estructura de Datos, Arquitectura de Ordenadores, Sistemas Operativos (que lo unica "novedad" destacable que te enseñan es el empleo de semaforos).
Luego base de datos, analisis y diseño del software..


Despues de todo este rollo, lo que vengo a decir, es que DOMINAR, por ejemplo, C, es la base en la cual te apoyarás para aprender posteriormente mas cosas.
Cuando veas que ya vas haciendo tus pinitos en C, y veas que vas haciendo programitas en windows, linux, probablemente te apetezca ir mas allá, y aprender pues algo de ensamblador, algo de la arquitectura de un pc, consola.... Lo mismo quieres aprender otros lenguajes, o te apetece saber algo de base de datos.

Vamos, que al contrario de lo que algun cantamañanas-aguafiestas-quitavoluntades ha dicho; si de verdad poneis empeño en aprender C, y a traves de el, ir mas allá; pues adelante, que posteriormente veréis recompensados los frutos a vuestro esfuerzo.
Eso si, pasito a pasito, y con buena letra, que Roma no se hizo en 2 dias ;)
Buenas.

A mi en C++ Express 2010 de Microsoft me saca error al compilar ello. El hola mundo yo lo hice así:

#include <stdio.h>
#include "stdafx.h" //Lo pide siempre, no se que sera, a ver si investigo
int main()
{
     printf("Hello World\n");
     getchar();
     return 0;
}


Bien, direis... ¿para que sirve el \n que hay al final? Es para hacer el salto de linea, sino saldría todo seguido.

Probar a poner esto:

#include <stdio.h>
#include "stdafx.h"
int main()
{
     printf("Hello World");
     printf("Tutorial EOL");
     getchar();
     return 0;
}


Como vereis, sale todo en una linea, asique probamos esto otro:

#include <stdio.h>
#include "stdafx.h"
int main()
{
     printf("Hello World\n");
     printf("Tutorial EOL\n");
     getchar();
     return 0;
}


un saludo ;D
Hola, primero gracias por vuestro soporte =P

Luego, alexricoj, cuando creas un nuevo proyecto, lo haces tal y como yo indico en el tutorial? Pues debes crear un proyecto vacío y luego añadir un archivo.
De lo contrario, compilaras un programa en C++, cuyas funciones son diferentes y no sirven las explicadas aquí (como main o getchar).
Asegúrate de leer como se crea el proyecto en blanco y como se añaden archivos.
Si esto lo haces bien, y aun así te da error, escribe por favor que error te da, de lo contrario no puedo ayudar mucho.

Más, "\n" sirve para saltar una línea, como si pulsaras [ENTER] en el word o parecidos.
Como lo describes en el tutorial no hay problema ;)
alexricoj escribió:Como lo describes en el tutorial no hay problema ;)


Perdon se me fue la mano, me refería a "etziojb" cuando dije lo del visual c++.

PD: Tengo malas noticias, de hecho son mas malas para mi que para vosotros xd Tengo una capsulitis en el dedo gordo de la mano izquierda, de momento no llevo célula (el hierro ese para sujetar el dedo inmóvil) así que puedo escribir relativamente bien con el teclado, en cuanto me la pongan, creo que lo poco que escriba lo haré a un paso realmente lento xd
Para todo el que tenga problemas con el programa de "mocosoft" bajen el dev C++ http://www.bloodshed.net/dev/devcpp.html en esa pagina abajo teneis la descarga, ai varias versiones.

este por lo menos a mi no me da problemas a la hora de compilar y esta bastante bien...

1Saludo.
Hola.

Antes de nada, gran tutorial, yo dí hace 2 años C en la universidad (ahora estoy mas involucrado en Java), pero quería repasar conceptos y me ha venido muy bien leerme este hilo.

He visto que varios tenéis problemas con IDEs y compiladores, voy a poner un pequeño tutorial para instalar Netbeans + MinGW + MSYS.
Lo primero, es descargar en Netbeans, desde este enlace. Hay que descargar la versión para C/C++ lógicamente. ;)

Descargamos también el MinGW y el MSYS.

Yo instalé primero el MinGW y el MSYS, y después el Netbeans (os lo digo porque yo lo hice en ese orden, no por nada en especial).

Bien, una vez instalado, nos queda que el Netbeans utilice el compilador descargado para compilar nuestros programas. Para ello, mirad esta imagen, el Netbeans debería reconocer las rutas que hay puestas al iniciarlo, pero si no se da el caso, pues os tiene que quedar tal como está (para ver esto id a Herramientas -> Opciones -> C/C++):

Imagen

Si se diera el caso de que no os sale ninguna Colección en la columna de la izquierda, darle e "Add", seleccionáis "Browse", y buscáis la ruta donde esta el MinGW/bin.
En el "Make Command", buscar la ruta del MSYS y seleccionar el archivo que está en la imagen.

Con esto, os debería compilar correctamente:

Imagen

Si alguien quiere un IDE, pues aquí tenéis un pequeño ejemplo para ir tirando.
Espero que os sirva de ayuda.

¡¡Un saludo!!
bff al final tengo el dedo casi roto, y con la férula (el hierro que se pone para inmovilizar) no puedo escribir con la mano izquierda.
Estaré 6-7 días así, lo siento, no podré escribir nada durante estos días, entended, que me es mucho trabajo escribir el tuto a una mano.
Seguiré respondiendo dudas si se da el caso.

Gracias y paciencia!

PD: Muy bueno el tutorial para instalar Netbeans y demás, gracias!
blipi escribió:bff al final tengo el dedo casi roto, y con la férula (el hierro que se pone para inmovilizar) no puedo escribir con la mano izquierda.
Estaré 6-7 días así, lo siento, no podré escribir nada durante estos días, entended, que me es mucho trabajo escribir el tuto a una mano.
Seguiré respondiendo dudas si se da el caso.

Gracias y paciencia!

PD: Muy bueno el tutorial para instalar Netbeans y demás, gracias!



Uf que putada tío,bueno en fin.Buensísimo el tutorial,por fin parece que voy comprediendo los punteros.Sí te metes con las api de windows te como besos [+risas]
Explicar el API de Windows es un poco como empezar la casa por el tejado. Además, veo bastante complicado hacer un tutorial de un API extenso.
Hola a todos.
Hace no mucho termine un programa de al rededor de 650 lineas en C, para la universidad.
La cosa es, una vez tengo todo el codigo y testeado ya, como hago una compilacion para ps3 y luego lo firmo para que la consola me deje ejecutarlo.

Es una gran duda que no he conseguido resolver xD
mike91 escribió:Hola a todos.
Hace no mucho termine un programa de al rededor de 650 lineas en C, para la universidad.
La cosa es, una vez tengo todo el codigo y testeado ya, como hago una compilacion para ps3 y luego lo firmo para que la consola me deje ejecutarlo.

Es una gran duda que no he conseguido resolver xD


Es exactamente lo mismo que quiero saber!!...el tuto esta de puta madre...pero para los que ya sabemos o trabajamos en el área como yo...nos vendría bien empezar a producir y publicar no??

Salu2!
Si quieres programar en C para la SDK, hay un hilo por aquí el foro que trata de "psl1ght", la sdk con que se hace:
hilo_tutorial-instalar-y-poner-a-punto-psl1ght-en-windows_1518084

Ahí tienes todo lo necesario y más para compilar pkg y todo eso. Cualquier duda, la preguntas allí mismo.

Salu2

PD: Añadido bucle for, y con lo que me duele el dedo cuando escribo, por hoy es suficiente xd
dark_on_5 está baneado por "saltarse baneo temporal con clon"
dark_on_5 escribió:Hola, ayer decidí empezar a programar "bien" en PS3 (me refiero dejar de hacer Hello worlds [360º] ) y decidí ponerme a trabajar en un "mini-juego" para Ps3. Nada grande, es para ver hasta donde podemos llegar yo y un amigo mio. Esperamos que en unos 3 meses lo tengamos perfeccionado.

En fin, al asunto XD

Al compilar me da este error, segurísimo que es un error de noob, algo que falta o alguna tontería.

Imagen

Que le pasa?

Saludos, y gran trabajo!
Hola,tengo una duda blipi,Llevo un rato pensandolo pero no termino de entender por que la función malloc en el ejemplo lleva un (char*) .Entiendo que estás usando typecasting pero,no entiendo el porque ni para que :-? :-? No se si es que es muy tarde,o.. [buuuaaaa]
Enhorabuena por el tutorial blipi
ken310 escribió:Hola,tengo una duda blipi,Llevo un rato pensandolo pero no termino de entender por que la función malloc en el ejemplo lleva un (char*) .Entiendo que estás usando typecasting pero,no entiendo el porque ni para que :-? :-? No se si es que es muy tarde,o.. [buuuaaaa]

Mira este post mío.
Juen escribió:
ken310 escribió:Hola,tengo una duda blipi,Llevo un rato pensandolo pero no termino de entender por que la función malloc en el ejemplo lleva un (char*) .Entiendo que estás usando typecasting pero,no entiendo el porque ni para que :-? :-? No se si es que es muy tarde,o.. [buuuaaaa]

Mira este post mío.


Ah! [carcajad] Entonces el malloc devuelve un void* pero para que no nos de problemas lo "pasamos" a char* usando el type casting (char*) correcto?

PD:Ahora estoy probando este code
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main(int argc,char **argv)
{
    char a[11]="Hola mundo";
    char b[]="Hola mundo";
    char *puntero=(char*)malloc(11*sizeof(char));
         strcpy(puntero,"Hola Mundo");
         printf("A vale %s\nB vale %s\n",a,b);
         printf("La dirrecion del puntero vale 0x%x,y el contenido del puntero vale  %s ",puntero,*puntero);
         system("pause");
         return 0;
}


Pero me crashea al ejecutarlo,el problema viene al poner *puntero en el último printf,si lo quito sí se ejecuta correctamente y hace lo que quiero,pero sí quiero mostrar el contenido del puntero,es decir el valor de la dirreción no deberiá poner *puntero? :p
Muy buenas. Me he quedado "encallado" en estos 2 ejercicios que os pongo a continuacion.

Escribir un programa que acepte fechas escritas de modo usual y las visualice como tres números.
Por ejemplo, la entrada
      15, Febrero 1989
producirá la salida
      15 2 1989


Escribir un programa que acepte un número de tres dígitos escrito en palabra y a continuación los visualice como un valor de tipo entero. La entrada se termina con un punto.
Por ejemplo, la entrada
      trescientos cuarentiseis
producirá la salida
      346


Hay que hacerlos suponiendo que unicamente se conoce las funciones de C: puts, printf, gets, scanf, if-else if, switch, operadores incremento/decremento, relacionales.
Aun no se sabe lo que es un puntero, array, ni bucles, ni otras funciones.....
Lo maximo que se sabe de un array, es que por ejemplo, una variable char puede tener este "aspecto":

char nombre[20] = "pepito grillo";

y que si ponemos

puts(&nombre[8]);

nos visualizará

grillo

Pues aquí estoy parado con estos ejercicios. Es que no se meterle mano unicamente con esas funciones.
En el ejemplo 1:
con
.
.
.
char fecha[30];
.
.
puts(fecha);
.
.


O por ejemplo con;

.
.
.
char fecha[30];
.
.
scanf("%[^\n]",fecha);
.
.


Se quedan almacenados los datos que le hemos metido, en la variable "fecha".

Pero el problema ya me viene aquí. Como coj*** entro dentro de ese array unicamente conociendo lo que he dicho antes, para por ejemplo cambiar el mes por un numero.....

No se, lo unico que se me ocurre ahora, es que en vez de hacer el ejercicio con cadenas de caracteres, hacerlo unicamente con caracteres. Pero claro, para la entrada de datos, habría que meter uno a uno cada caracter de la fecha (1-5-,- -F-e-b-r-e-r-o- -1-9-8-9). Y, entonces ya no estamos haciendo lo que pone en el ejercicio.

Nosé, iluminenme [+risas]
ken310 escribió:[...]
Pero me crashea al ejecutarlo,el problema viene al poner *puntero en el último printf,si lo quito sí se ejecuta correctamente y hace lo que quiero,pero sí quiero mostrar el contenido del puntero,es decir el valor de la dirreción no deberiá poner *puntero? :p


Antes de nada, la forma correcta de mostrar la dirección almacenada en los punteros es la cadena de formato %p, no %x.
Respecto a tu problema, lo correcto es poner puntero, eso es porque la cadena de formato %s espera un cadena de C, es decir, un puntero (es decir, un vector con el delimitador de fin '\0'), si le pones *puntero, como bien has dicho, le estás pasando el contenido, en tu caso el caracter 'H' (seguramente no será solo 'H', tendría que investigarlo), entonces interpreta que la cadena está almacenada en la dirección 0x48 (código ASCII de la H en hex). Cuando accede a esa dirección el sistema de gestión de memoria del sistema operativo mata el proceso porque accede a una zona de memoria que no le corresponde (explicación).

Respecto al malloc, sí, lo has entendido, pero no has liberado antes de finalizar el programa la memoria que has reservado con malloc, estás suspenso.
Juen, permiteme decirte que %x también sirve para mostrar la dirección a la que apunta el puntero.
Puesto que el contenido del puntero es la dirección, el %x se limita a mostrarla.
No te negaré que %p queda mas bonito, pero la forma de mostrarlo es distinta, y dudo mucho que la entiendan. A diferencia de %x que lo presenta en formato hexadecimal, que de hecho, es el formato en que se trabaja en C para editar la memoria.


En ambos casos (%p y %x), debes usar el puntero sin *, pues %p sustituye automáticamente por la dirección donde apunta, y %x coge el valor del puntero (la dirección) y la muestra.
Si tu haces *puntero, accedes a la variable o memoria de destino, por lo cual ya no tienes un puntero, sino un valor normal.
De cualquier manera, el compilador (GCC/G++, no se si el que usas lo muestra) muestra el aviso:
aviso: el formato ‘%x’ espera el tipo ‘unsigned int’, pero el argumento 2 es de tipo ‘char *’     

Y, al menos yo, nunca los ignoro.
Que puede ser que todo vaya bien, sí, pero no es la forma correcta de hacer las cosas. Hay una cadena de formato para los punteros y eso es lo que se debe usar. También puede ser arriesgado suponer que el tamaño de void* y de uint va a ser siempre igual.

Respecto a lo que comentas del formato de salida, al menos con GCC/G++, muestra el valor hex.
anikilator escribió:Muy buenas. Me he quedado "encallado" en estos 2 ejercicios que os pongo a continuacion.

Escribir un programa que acepte fechas escritas de modo usual y las visualice como tres números.
Por ejemplo, la entrada
      15, Febrero 1989
producirá la salida
      15 2 1989


Escribir un programa que acepte un número de tres dígitos escrito en palabra y a continuación los visualice como un valor de tipo entero. La entrada se termina con un punto.
Por ejemplo, la entrada
      trescientos cuarentiseis
producirá la salida
      346


Hay que hacerlos suponiendo que unicamente se conoce las funciones de C: puts, printf, gets, scanf, if-else if, switch, operadores incremento/decremento, relacionales.
Aun no se sabe lo que es un puntero, array, ni bucles, ni otras funciones.....
Lo maximo que se sabe de un array, es que por ejemplo, una variable char puede tener este "aspecto":

char nombre[20] = "pepito grillo";

y que si ponemos

puts(&nombre[8]);

nos visualizará

grillo

Pues aquí estoy parado con estos ejercicios. Es que no se meterle mano unicamente con esas funciones.
En el ejemplo 1:
con
.
.
.
char fecha[30];
.
.
puts(fecha);
.
.


O por ejemplo con;

.
.
.
char fecha[30];
.
.
scanf("%[^\n]",fecha);
.
.


Se quedan almacenados los datos que le hemos metido, en la variable "fecha".

Pero el problema ya me viene aquí. Como coj*** entro dentro de ese array unicamente conociendo lo que he dicho antes, para por ejemplo cambiar el mes por un numero.....

No se, lo unico que se me ocurre ahora, es que en vez de hacer el ejercicio con cadenas de caracteres, hacerlo unicamente con caracteres. Pero claro, para la entrada de datos, habría que meter uno a uno cada caracter de la fecha (1-5-,- -F-e-b-r-e-r-o- -1-9-8-9). Y, entonces ya no estamos haciendo lo que pone en el ejercicio.

Nosé, iluminenme [+risas]


Hombre podrías hacer que la entrada la haga separada es decir... "Primero Introduzca el día" Luego "Introduzca el mes" y despues "introduzca el año" el mes lo guardas en un char llamaod por ejemplo mes,y luego con un if los compruebas if(mes=febrero) y le cambias el valor.

? Te hablo desde la ignorancia,pero prueba alguna cosa así [+risas]
ken310 escribió:Hombre podrías hacer que la entrada la haga separada es decir... "Primero Introduzca el día" Luego "Introduzca el mes" y despues "introduzca el año" el mes lo guardas en un char llamaod por ejemplo mes,y luego con un if los compruebas if(mes=febrero) y le cambias el valor.

? Te hablo desde la ignorancia,pero prueba alguna cosa así [+risas]



wenas, y gracias por responder.
Definitivamente he pasado de esos 2 ejercicios, porque no se meterle mano solamente con eso. Así que a otra cosa mariposa XD

Creo, que como bien dices, esos ejercicios, al ser para primerizos, (aunque los enunciados te lleven a engaños ) están enfocados a que se vaya introduciendo la frase caracter a caracter, y a partir de ahí, ir haciendo lo que te pide. Vamos, eso creo yo, porque no le encuentro otro sentido.

Por cierto, la expresion esta que me has puesto, te la digo mas que nada para ir aprendiendo entre todos nuestros fallitos;

if(mes=febrero)

Tiene 2 fallos.
El primero, que ese = es de asignacion, no de relacion. Sería, en todo caso ==
El segundo, que las cadenas de caracteres no se comparan con ==, sino con strcmp

ciao
Te mereces una puta estatua de oro por el curre tio!! en serio, me está siendo muy útil para aprender C(acabo de terminar una asignatura de libre en mi escuela y me viene genial para fijar conceptos y ampliar conocimientos)
Saludos,
solo felicitarte por tu trabajo y animarte a sacar la segunda parte de este estupendo tutorial.

Cordialmente, para todos los que se lo curran, que por aquí hay muchos.
cfull está baneado por "SPAMMER"
gracias tio
muchisimas gracias, pedazo de tutorial tio :)
dark_on_5 está baneado por "saltarse baneo temporal con clon"
Una cosa, he compilado mi hello world y un sample de Hermes para cargar PNG, pero no se inicia el "juego". Se inicia y se sale.

Tendra algo que ver que la app sin firmar pesa 331kb y firmada 49kb? Me parece muy extraño, ademas no se como firmar mi pkg salvo por el método que uso ahora que no me da mucha confianza (por lo de el tamaño...)

Saludos y AYUDA! [mamaaaaa]
A los que les este guste C y les guste la programación de videojuegos, mirar la librería Allegro. Se hacen cosas sencillitas, pero chulas.

Cuando estudié en clase C, hicimos juegos tipo space invader, come cocos, bomber man, parchis...

perdón por el semi offtopic.
Dios mio... es realmente impresionante este tutorial :O :O

G-R-A-C-I-A-S!
Tremendo turorial Bro...
Luego lo seguiré cuando tenga un tiempillo extra...
Saludos!!!
Chicos/as, perdonadme por no escribir nada durante estos días (y los que aun vienen), aquí tenéis los motivos:

He estado unos 3 días con fiebre, y mis padres me han quitado el internet T_T (que rabia me da esto...)
Aun estoy sin, lo que pasa que me lo han dejado un momentito para hacer un trabajo.
Espero que no tarden mucho en devolvérmelo... sry...

PD.: Ya estoy bien del dedo, así que cuando me lo devuelvan, seguiré escribiendo.

@dark_on_5
Es normal que el firmado se reduzca el peso del pkg, en mi caso pasa de ~1'2 MB a ~0'7 MB. Supongo que será correcto.
Te da algún tipo de error? De no ser así, asegúrate de interrumpir la función "main" antes del "return 0;" usando por ejemplo un "while(run);", donde "run" sea una variable con valor "true" (1) excepto cuando se decida salir, que se cambie a 0. Eso lo puedes hacer con los sys_callback.
Justo en estos momentos necesito aprender algo de C, no te imaginas lo bien que me caíste, te agradezco por tomarte tu tiempo en hacer este tutorial que te garantizo que nos servirá a muchos acá en el foro

GRACIAS!!!
Muchissimas gracias, lo ire siguiendo.
Gracias por tomarte tu tiempo
He ampliado un poco el tutorial, que ya tocaba, llevaba mucho sin hacerlo.

Acabado el tema bucles -> Añadido el bucle do-while
Empezado y bastante desarrollado el tema condicionales -> Hay bastante información sobre el "if".
448 respuestas
1, 2, 3, 4, 5, 69