Curso completo de programación con lenguaje C

r2d2rigo

#270 strcpy no tiene en cuenta el \0 para las cadenas. Haz un memset antes por si acaso.

shortyStyle

#2 Muchas gracias por el aporte, hace años que no toco C y me ha ido de perlas leerme tus entradas para refrescar la mente, ya que ahora tengo que volver a tocar C + ASM y necesitaba recuperar conceptos.

bornex

Vengo a preguntar una cosa que quiero que no se tome a mal. Pero hace tiempo que me pregunto ¿para que sigue valiendo C ademas de programación de sistemas/compiladores?. ¿La gente sigue programando con punteros?

Lo digo porque a todos los programadores que conozco de C++ utilizan la STL o otras librerías y C no lo he visto nunca a la hora de programar software. Tengo poca experiencia, pero ¿tiene mas utilidades C?

1 respuesta
gonya707

#273 en la programación de hardware, por ejemplo, C sigue siendo el boss. Ha habido intentos de empezar a usar javascript o python pero al final los principales manufacturers como texas instruments o microchip siguen exigiendo el uso de C, ya que al fin y al cabo es programación a bajisimo nivel

1 respuesta
bornex

#274 Vale ok, cierto se me había olvidado. Pero, ¿este lenguaje tiene futuro a la hora de buscar trabajo con el, siendo senior en C o algo así? La mayoría de ofertas piden proficient en C++, Java, C#...

3 respuestas
gonya707

#275 Hombre, raro sería que te pidiesen C, a no ser que sea para programar hardware ya digo. Pero es que de C a C++ es un paso orientando a la POO, con lo que pidiendo C++ ya se cubren las espaldas, porque "sabes" Java, y cualquier otro lenguaje orientado a objetos, aunque no te des cuenta.

1 respuesta
bornex

#276 Ok, eso si es verdad xD. C/C++ van de la mano.

Fyn4r

#275 si quieres programar el kernel de linux C tiene futuro si xD

N

#275 C++ también es el lenguaje principal con el que se devean videojuegos.

1 respuesta
Maaarc

Cuando empieza el de POO con java? hurje.

1 respuesta
gonya707

#280 con java? nunca xD esto es C, y al final he ido dejando de lando el continuar con C++.

De todos modos si sabes ya C y necesitas el empujón a C++, mirate el Apendice B de este documento (pagina 144)

http://www.albertogarcia.info/libros/sdl/%5Bebook%5DProgramacion%20de%20videojuegos%20con%20SDL.pdf

1 1 respuesta
Maaarc

#281 En la uni haremos POO con java, por eso lo decia jaja pero bueno, tirare con el Thinking on Java y a volar

bornex

#279 Ya, ya. Lo que me refiero es que no conozco a nadie que se ponga a programar con punteros, si no, con librerías de C++ que facilitan el trabajo. Por eso mi duda sobre C. Gestionar la memoria es un coñazo, hay que tener los conceptos muy claros para hacerlo correctamente y no cagarla. Aun que es más eficiente y los compiladores como gcc no permiten pifias muy gordas.

2 respuestas
N

#283 De hecho, hay uno señores que programaron un juego 3D en ensamblador y de 60 FPS no bajaba pasara lo que pasara. Todo depende del tiempo que tengas y las ganas que tengas... Yo estoy usando SpriteKit para chanchullera en Swift y noto que de iP6 a iP5s ya crea algo de lag...

Pero sí, todo el mundo dejamos al garbage colector que nos haga el trabajo sucio xD

sasher

#283 Pues no se que gente conocerás que no use punteros en su día a día en C++, porque vamos, es una de las cosas básicas. Gestionar la memoria no es un coñazo; si estás utilizando C++ se entiende que sabes como funciona el tema, sino ahí tienes Java o cualquier otro lenguaje orientado a objetos.

1 respuesta
HeXaN

La STL la carga el diablo.

1 respuesta
bornex

#285 Vamos a ver hombre, claro que se utilizan los punteros bastante, pero es cierto que ya hay capas que te abstraen bastante de ellos en C++. Está claro que en el día a día se tienen que utilizar, sobre todo en paso por referencia a funciones.

#286 xD Puta STL tt

Eterno

Yo estoy en la introducción y al compilar no me sale el .exe.

PD: Soy un puto manco.

1 respuesta
willy_chaos

#288 Si compilas bajo linux, siempre que no te haya dado error al compilar..., da igual la extension.

Vease si te ha salido algo tipo programa.o no te preocupes haz ./programa.o

En Linux las extensiones no tienen nada que ver con Windows. En Windows la extension define el tipo de programa o fichero que "es". En Linux la extension no es mas que otra parte del nombre.

Por cierto #1 has pensado en dar un poco el tema de interrupciones? Justo tuve que hacer una practica este viernes de programacion de Interrupciones, podria poner el codigo aquí.

spoiler

Para enviar interrupciones, desde otra consola de linux, podeis enviar con el comando

kill -numeroInterrupcion IDproceso

Por ejemplo, si el proceso es el pid 3376 y queremos enviar una interrupcion n 12

kill -12 3376

Cuando el programa finalice, veremos que muestra que ha recibido 2 o 3 interrupciones.

Si acaba por tiempo - saldra

La señal 12 que hemos enviado + SIGALRM + SIGINT

Si finalizamos con CTRL+C

La señal 12 que hemos enviado + SIGINT

La funcion signal (numInterrupcion,funcionalaqueredirigimos) nos permite reasignar la funcion de la interrupcion.

Por ejemplo la SIGINT (CTRL + C) podemos reasignarla a que cuando el usuario pulse CTRL + C muestre un mensaje por pantalla en vez de finalizar el programa. Ej si tenemos una funcion que muestre un mensaje llamada printamensaje, si queremos redirigir el control +c

signal (SIGINT, printamensaje) o signal(2,printamensaje)

Si queremos desde dentro del programa lanzar una interrupción, lo haremos con raise y el numero o alias de la interrupción. Por ejemplo si quisieramos enviarnos una interrupcion de matar proceso podriamos enviar la SIGKILL (lo mismo que kill -9 pid) haciendo un raise(SIGKILL)

1 respuesta
Eterno

#289 Tengo Windows Vista.

2 1 respuesta
krzz

#290 quitate eso!! caca , eso es caca xD en verdad para tener vista no se .. ponte windows 7 te irá muchisimo mejor

1 respuesta
B

#291 windows 8.1 le ira mejor

si tiene vista con sp2 y le gusta, va bien.

Eterno

Yo sólo quiero saber opciones de porque no me sale el .exe xDD

1 respuesta
chouji

#293 Porque eres como Internet Explorer

1
Leos

Tengo que hacer un programa para calcular la raíz cuadrada y he hecho esto:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void){

int num;
double resultat;

printf("Escriu un nombre: \n"); scanf("d%", &num);
	
resultat=sqrt(num);

if(num>0)
	printf("Resultat: %d \n", resultat);
else
    printf("Error!");
  
  system ("pause");
  return 0;

}

Pero no me la calcula bien :S seguramente sera un error muy tonto pero no lo veo.

2 respuestas
Maaarc

#295 Pon un Float en vez de un double, que ahora no recuerdo si double permite decimales.

1 respuesta
Leos

#296 Le he cambiado a float para probar pero el resultado me acaba dando mal :S

trarleys

#295

scanf("d%", &num);

Tienes al revés el %d y cuando trabajas con doubles tienes que poner %f, así que

printf("Resultat: %d \n", resultat); 

sería

printf("Resultat: %f \n", resultat);

.

1 respuesta
Leos

#298 Gracias, que error más tonto u.u pero aún arreglando eso el resultado que me da no es el correcto

1 respuesta
trarleys

#299 Que raro, a mi el programa me funciona a la perfección haciendo esos dos cambios. En si que error te sale ?

1 respuesta

Usuarios habituales