› Foros › PlayStation 3 › Scene
aquilino escribió:xXDraklordXx escribió:Si, se como funciona, por eso mi duda. Con un simple sleep(1) no reacciona, es necesario limpiar el buffer de salida - fflush(stdout) - para que funciona y eso es lo que no entiendo.
lo he probado asi#include <stdio.h>
#include <windows.h>
int main() {
int i;
for (i=0; i<=10; i++) {
printf("%i", i);
//fflush(stdout);
Sleep(1000); // En mili segundos
}
return 0;
}
funciona bien prueba y me cuentas
xXDraklordXx escribió:aquilino escribió:xXDraklordXx escribió:Si, se como funciona, por eso mi duda. Con un simple sleep(1) no reacciona, es necesario limpiar el buffer de salida - fflush(stdout) - para que funciona y eso es lo que no entiendo.
lo he probado asi#include <stdio.h>
#include <windows.h>
int main() {
int i;
for (i=0; i<=10; i++) {
printf("%i", i);
//fflush(stdout);
Sleep(1000); // En mili segundos
}
return 0;
}
funciona bien prueba y me cuentas
No uso windows y sleep está definido en otra librería (unistd.h), quizás sea por eso.
#include <stdio.h>
//#include <windows.h>
#include <unistd.h>
int main() {
int i;
for (i=0; i<=10; i++) {
printf("%i", i);
// fflush(stdout);
usleep(200000); //
}
return 0;
}
aquilino escribió:pues si que es necesario en linux fflush(stdout);
ya investigare
xXDraklordXx escribió:aquilino escribió:pues si que es necesario en linux fflush(stdout);
ya investigare
Pues yo me volví loco hasta dar con esa línea jajajajaja. Si consigues averiguar algo me avisas que tengo curiosidad ajjajajaja
#include <stdio.h> // función printf
#include <unistd.h>// sleep s minúscula
int main() {
int i;
for (i=0; i<=10; i++) {
printf("%i\n", i);
sleep(1); // en segundos
}
return 0;
}
aquilino escribió:xXDraklordXx escribió:aquilino escribió:pues si que es necesario en linux fflush(stdout);
ya investigare
Pues yo me volví loco hasta dar con esa línea jajajajaja. Si consigues averiguar algo me avisas que tengo curiosidad ajjajajaja
me he vuelto loco pero ya esta
He leído esto: ¿Qué es el fflush( stdout )?. Pues bien, cuando usamos la función printf, no escribimos directamente en la pantalla, sino en una memoria intermedia (lo que llaman un bufer). Cuando este bufer se llena o cuando metemos un carácter '\n' es cuando se envía el texto a la pantalla. En este ejemplo yo quería que apareciera el mensaje Introduce una letra: y el cursor se quedara justo después, es decir, sin usar '\n'. Si se hace esto, en algunos compiladores el mensaje no se muestra en pantalla hasta que se pulsa una tecla (probar). Y la función fflush( stdout ) lo que hace es enviar a la pantalla lo que hay en ese bufer.
en resumen si pones un salto de linea = \n O endl; se imprimirán los números uno ha uno#include <stdio.h> // función printf
#include <unistd.h>// sleep s minúscula
int main() {
int i;
for (i=0; i<=10; i++) {
printf("%i\n", i);
sleep(1); // en segundos
}
return 0;
}
setbuf(stdout, NULL);
setvbuf (stdout, NULL, _IONBF, BUFSIZ);
blipi escribió:Efectivamente, lo que en sistemas Windows es "sleep(...);" en unix se define como "usleep(...);".
Nótese que el 'sleep' de windows es igual que el de unix 'usleep', operan en milisegundos. En cambio el 'sleep' de unix definido en 'unistd' toma el valor en segundos. Esto puede llevar a grandes confusiones.
Lord Braham escribió:usleep usa microsegundos, no milisegundos.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char characters[128];
printf("Use the next characters to generate the wordlist: ");
fgets(characters, sizeof(characters), stdin);
int bits = 0;
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;
int i;
int j;
int k;
int l;
int m;
int n;
int o;
int p;
int q;
int r;
int s;
int t;
int u;
int v;
int w;
int x;
int y;
int z;
for (a=0; a<(strlen(characters)-1); a++) {
printf("%c\n", characters[a]);
bits+=1;
for (b=0; b<(strlen(characters)-1); b++) {
printf("%c%c\n", characters[a], characters[b]);
bits+=2;
for (c=0; c<(strlen(characters)-1); c++) {
printf("%c%c%c\n", characters[a], characters[b], characters[c]);
bits+=3;
for (d=0; d<(strlen(characters)-1); d++) {
printf("%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d]);
bits+=4;
for (e=0; e<(strlen(characters)-1); e++) {
printf("%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e]);
bits+=5;
for (f=0; f<(strlen(characters)-1); f++) {
printf("%c%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e], characters[f]);
bits+=6;
for (g=0; g<(strlen(characters)-1); g++) {
printf("%c%c%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e], characters[f], characters[g]);
bits+=7;
}
}
}
}
}
}
}
printf("\n%i bits\n%i bytes\n%i Mb\n%i Gb", bits, bits/8, (bits/8)/1024, ((bits/8)/1024)/1024);
return 0;
}
xXDraklordXx escribió:Tengo el siguiente código y me gustaría que alguien me ayudase a optimizarlo ya que me he comido demasiado la cabeza sin resultado y, aún sin terminar, es demasiado extenso.#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char characters[128];
printf("Use the next characters to generate the wordlist: ");
fgets(characters, sizeof(characters), stdin);
int bits = 0;
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;
int i;
int j;
int k;
int l;
int m;
int n;
int o;
int p;
int q;
int r;
int s;
int t;
int u;
int v;
int w;
int x;
int y;
int z;
for (a=0; a<(strlen(characters)-1); a++) {
printf("%c\n", characters[a]);
bits+=1;
for (b=0; b<(strlen(characters)-1); b++) {
printf("%c%c\n", characters[a], characters[b]);
bits+=2;
for (c=0; c<(strlen(characters)-1); c++) {
printf("%c%c%c\n", characters[a], characters[b], characters[c]);
bits+=3;
for (d=0; d<(strlen(characters)-1); d++) {
printf("%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d]);
bits+=4;
for (e=0; e<(strlen(characters)-1); e++) {
printf("%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e]);
bits+=5;
for (f=0; f<(strlen(characters)-1); f++) {
printf("%c%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e], characters[f]);
bits+=6;
for (g=0; g<(strlen(characters)-1); g++) {
printf("%c%c%c%c%c%c%c\n", characters[a], characters[b], characters[c], characters[d], characters[e], characters[f], characters[g]);
bits+=7;
}
}
}
}
}
}
}
printf("\n%i bits\n%i bytes\n%i Mb\n%i Gb", bits, bits/8, (bits/8)/1024, ((bits/8)/1024)/1024);
return 0;
}
Agradezco toda la ayuda que me podais dar. Un saludo!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD_LENGTH 7
void imprime(int l, char characters[], char word[], int *bits) {
int i, j;
*bits+=l * (strlen(characters) - 1);
for (i = 0; i < strlen(characters) - 1; ++i) {
word[l - 1] = characters[i];
for (j = 0; j < l; ++j) printf("%c", word[j]);
printf("\n");
if (l < MAX_WORD_LENGTH) imprime(l + 1, characters, word, bits);
}
}
int main() {
char characters[128];
char word[MAX_WORD_LENGTH];
printf("Use the next characters to generate the wordlist: ");
fgets(characters, sizeof(characters), stdin);
int bits = 0;
imprime(1, characters, word, &bits);
printf("\n%i bits\n%i bytes\n%i Mb\n%i Gb", bits, bits/8, (bits/8)/1024, ((bits/8)/1024)/1024);
return 0;
}
anyWere escribió:Hola blipi.
Hoy comienzo a leer tu tutorial desde cero. No tengo ni idea de programación así que espero adquirir unos conocimientos básicos gracias a tu esfuerzo y dedicación.
Muchas gracias por todo y ya te iré contando que tal me va.
Edito: me surge una duda. C, al ser un lenguaje de nivel medio... ¿no sería conveniente aprender antes un lenguaje de bajo nivel o incluso el lenguaje de la máquina?
Robot escribió:Haver tengo un dudilla ami me digieron que programa c++ es una mejora del c eso es verdad , son diferente codigos haber que diferencia hay ¿?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char characters[128];
char *a0, *a1, *a2, *a3, *a4, *a5, *a6;
char myword[8];
char *w0, *w1, *w2, *w3, *w4, *w5, *w6, *w7
unsigned long bytes;
printf("Use the next characters to generate the wordlist: ");
fgets(characters, sizeof(characters), stdin);
// Te faltaria eliminar los bytes repetidos para evitar palabras duplicadas
// Tambien deberias comprobar que al menos hay 7 caracteres distintos
// Sugerencia: hacer una funcion recursiva hasta l niveles para imprimir diccionarios de longitud l.
myword[7]='\n';
w0=myword;
w1=w0+1;
w2=w1+1;
w3=w2+1;
w4=w3+1;
w5=w4+1;
w6=w5+1;
for (a0=characters; *w0=*a0; a0++) {
for (a1=characters; *w1=*a1; a1++) {
for (a2=characters; *w2=*a2; a2++) {
for (a3=characters; *w3=*a3; a3++) {
for (a4=characters; *w4=*a4; a4++) {
for (a5=characters; *w5=*a5; a5++) {
for (a6=characters; *w6=*a6; a6++) write(1, myword, 8);
*w6='\n';
write(1, myword, 7);
}
*w5='\n';
write(1, myword, 6);
}
*w4='\n';
write(1, myword, 5);
}
*w3='\n';
write(1, myword, 4);
}
*w2='\n';
write(1, myword, 3);
}
*w1='\n';
write(1, myword, 2);
}
bytes=strlen(characters)+1;
bytes=(bytes) + (bytes*bytes) + (bytes*bytes*bytes) + (bytes*bytes*bytes*bytes) + (bytes*bytes*bytes*bytes*bytes) + (bytes*bytes*bytes*bytes*bytes*bytes) + (bytes*bytes*bytes*bytes*bytes*bytes*bytes);
printf("\n%ul bytes\n%ul MB\n%ul GB", bytes, bytes>>10, bytes>>20);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void palabra(char word[], char chars[], int k, int len);
int main(int argc, char **argv)
{
char word[255]; //-Contraseñas de 255 caracteres? - No hombre!
memset(word, '\0', sizeof(word));
palabra(word, argv[1], 0, atoi(argv[2]));
return 0;
}
void palabra(char word[], char chars[], int k, int len)
{
if (k < len){
unsigned int i;
for (i = 0; i < strlen(chars); i++){
word[k] = chars[i];
printf ("%s\n", word);
palabra(word, chars, k+1, len);
}
word[k] = '\0';
}
}
#include <sys/msg.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/sem.h>
#include <signal.h>
#include <time.h>
struct mensaje_1_2 {
long type;
char login[8];
};
struct mensaje_3 {
long type;
int num;
char fileName[10];
};
struct user_info {
char login[8];
};
key_t keyLista;
key_t keySem;
int Id_Cola;
int Id_Semaforo;
int Id_memoria_compartida;
struct user_info *memoria_compartida;
void readMsgFile(char *user);
void writeMsgFile(char *de, char *para, char *msg);
void sem(int index, int op);
void readMsgFile(char *user){ /* Funcion para leer mensajes */
char line[200];
FILE *msgFile;
msgFile = fopen("msg.txt", "r");
while (fgets(line, 200, msgFile) != NULL){
char para[16];
sprintf(para, "Para: %s", user);
if (strstr(line, para) != NULL){
printf ("%s\n", line);
}
}
}
void writeMsgFile(char *de, char *para, char *msg){ /* Funcion para escribir mensajes */
/* Calculo la hora actual */
time_t now = time(0);
struct tm *tlocal = localtime(&now);
char stnow [19];
strftime(stnow, 19, "%d/%m/%y %H:%M:%S", tlocal);
/* Escribo en el msg.txt */
FILE *msgFile;
msgFile = fopen("msg.txt", "a");
fprintf(msgFile, "[%s] De: %s, Para: %s, Mensaje: %s.\n", stnow, de, para, msg);
fclose(msgFile);
}
void sem(int index, int op){ /* Función para inicializar los semaforos */
struct sembuf operacion;
operacion.sem_num = index;
operacion.sem_op = op;
operacion.sem_flg = 0;
semop(Id_Semaforo, &operacion, 1); /* Inicialmente desbloqueado */
}
int main(int argc, char *argv[]){
char nombreUsuario[8];
char otroUsuario[8];
struct mensaje_1_2 m1;
m1.type = 1;
int opcion = 0;
int i = 0;
char msg[256];
struct mensaje_1_2 m2;
struct mensaje_3 m3;
m3.type = 3;
/* Se comprueba que son introducidos los argumentos correctos */
if (argc != 3){
printf("Error, numero incorrecto de argumentos.\n");
exit(0);
}
keyLista = ftok(argv[1], atoi(argv[2]));
Id_Cola = msgget(keyLista, 0777 | IPC_CREAT);
printf("Introduzca su nombre de usuario, por favor:\n");
fflush(stdin);
scanf("%s", nombreUsuario);
strcpy (m1.login, nombreUsuario);
msgsnd(Id_Cola, (struct msgbuf *)&m1, sizeof(m1.login), IPC_NOWAIT);
msgrcv(Id_Cola, (struct msgbuf *)&m3, sizeof(m3.num) + sizeof(m3.fileName), 3, 0);
keySem = ftok(m3.fileName, m3.num);
Id_Semaforo = semget(keySem, 2, 0600 | IPC_CREAT);
/* Inicializar los semaforos a 1 */
semctl(Id_Semaforo, 0, SETVAL, 1);
semctl(Id_Semaforo, 1, SETVAL, 1);
Id_memoria_compartida = shmget (keySem, sizeof(struct user_info)*100, 0777 | IPC_CREAT);
memoria_compartida = (struct user_info *)shmat(Id_memoria_compartida, (char *)0, 0);
/* Imprime el menu en pantalla */
while (opcion != 4){
printf("ELIJA UNA OPCION DEL MENU.\n");
printf("1.- MOSTRAR USUARIOS CONECTADOS.\n");
printf("2.- ENVIAR MENSAJE.\n");
printf("3.- VER MENSAJES.\n");
printf("4.- SALIR.\n");
fflush(stdin);
scanf("%d", &opcion);
switch(opcion){
case 1:
printf("Los usuarios conectados son los siguientes:\n");
sem(0, -1); /* Bloqueo sem0 */
for (i = 0; i < 100; i++){
if (strcmp(memoria_compartida[i].login, "") != 0){
printf( "%d = %s\n",i, memoria_compartida[i].login);
}
}
sem(0, 1); /* Desbloqueo sem0 */
printf("Fin de lista.\n");
break;
case 2:
printf("Introduzca el destinatario, por favor:\n");
fflush(stdin);
scanf("%s", otroUsuario);
sem(0, -1); /* Bloqueo sem0 para comprobar si el usuario que se ha introducido esta conectado */
for (i = 0; i < 100; i++){
if (strcmp(memoria_compartida[i].login, otroUsuario) == 0){
printf("El usuario %s esta conectado.\n", otroUsuario);
printf("Mensaje: \n");
fflush(stdin);
scanf("%*c%[^\n]", msg);
sem(1, -1); /* Bloqueo sem1 para mandar el mensaje */
writeMsgFile(nombreUsuario, otroUsuario, msg);
sem(1, 1); /* Desbloqueo sem1*/
break;
}
}
sem(0, 1); /* Desbloqueo sem0 */
break;
case 3:
printf("Ver mensajes.\n");
sem(1, -1); /* Bloqueo sem1 para leer los mensajes */
readMsgFile(nombreUsuario);
sem(1, 1); /* Desbloqueo sem1 */
break;
case 4:
m2.type = 2;
strcpy(m2.login, nombreUsuario);
msgsnd(Id_Cola, (struct msgbuf*)&m2, sizeof(m2.login), IPC_NOWAIT);
break;
default:
printf("Opción no valida. Vuelva a intentarlo.\n");
}
}
return 0;
if (Id_memoria_compartida != -1){
shmdt((char*)memoria_compartida);
}
}
#include <sys/msg.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/sem.h>
void liberarCola(int sig);
void sem(int index, int op);
key_t claveLista;
key_t claveSemaforos;
int Id_Cola;
int Id_Semaforo;
int Id_memoria_compartida;
struct user_info {
char login[8];
};
struct user_info *memoria_compartida;
struct mensaje_3 {
long type;
int num;
char fileName[10];
};
struct mensaje_1_2 {
long type;
char login[8];
};
void sem(int index, int op) {
struct sembuf operacion;
operacion.sem_num = index;
operacion.sem_op = op;
operacion.sem_flg = 0;
semop(Id_Semaforo, &operacion, 1);
}
void liberarCola(int sig){
if (signal(SIGINT, liberarCola)==SIG_ERR){
perror("Llamada a SIGNAL erronea..\n");
exit(-1);
}
msgctl(Id_Cola, IPC_RMID, (struct msqid_ds *)NULL);
shmdt((char *)memoria_compartida);
shmctl(Id_memoria_compartida, IPC_RMID, (struct shmid_ds *)NULL);
exit(0);
}
int main(int argc, char *argv[]){
int i;
int j = 0;
int k = 0;
struct user_info user;
struct mensaje_1_2 m1;
struct mensaje_1_2 m2;
struct mensaje_3 m3;
struct user_info usAux; // usuario auxiliar para borrar el login
if (argc != 5){
printf("Error, numero incorrecto de argumentos.\n");
exit(0);
}
if (signal(SIGINT, liberarCola)==SIG_ERR){
perror("Llamada a SIGNAL erronea..\n");
exit(-1);
}
claveLista = ftok(argv[1], atoi(argv[2]));
if (claveLista == (key_t)-1) {
printf("Error al generar la clave de acceso a la cola de mensajes.\n");
return -1;
}
Id_Cola = msgget(claveLista, 0777 | IPC_CREAT);
if (Id_Cola == -1) {
printf("Error al obtener identificador para la cola mensajes.\n");
return -1;
}
claveSemaforos = ftok(argv[3], atoi(argv[4]));
if (claveSemaforos == -1) {
printf("Error al generar la clave de acceso.\n");
return -1;
}
Id_Semaforo = semget(claveSemaforos, 2, 0600 | IPC_CREAT);
if (Id_Semaforo == -1) {
printf("Error al crear semaforo.\n");
return -1;
}
semctl(Id_Semaforo, 0, SETVAL, 1);
semctl(Id_Semaforo, 1, SETVAL, 1);
Id_memoria_compartida = shmget (claveSemaforos, sizeof(struct user_info)*100, 0777 | IPC_CREAT);
memoria_compartida = (struct user_info *)shmat(Id_memoria_compartida, (char *)0, 0);
// inicializo la lista de usuarios en la zona de memoria compartida
sem(0, -1);
strcpy (user.login, "");
for(i = 0; i < 100; i++){
memoria_compartida[i] = user;
}
sem(0, 1);
// inicializamos el fichero de mensajes.
sem(1, -1);
FILE *msgFile;
msgFile = fopen("msg.txt", "w");
fclose(msgFile);
sem(1, 1);
printf("El servidor comienza a funcionar.\n");
while (1){
if (msgrcv(Id_Cola, (struct msgbuf *)&m1, sizeof (m1.login), 1, IPC_NOWAIT) != -1){
m3.type = 3;
strcpy(m3.fileName, argv[3]);
m3.num = atoi(argv[4]);
msgsnd(Id_Cola, (struct msgbuf *)&m3, sizeof(m3.num) + sizeof(m3.fileName), IPC_NOWAIT);
//guardamos el login del nuevo usuario en la lista de usuarios.
sem(0, -1);
while (j < 100 && (strcmp(memoria_compartida[j].login, "") != 0)) j++; // cuidado!
strcpy(memoria_compartida[j].login, m1.login);
sem(0, 1);
}
if (msgrcv(Id_Cola, (struct msgbuf *)&m2, sizeof (m2.login), 2, IPC_NOWAIT) != -1){
sem(0, -1);
for(k = 0; k < 100; k++){
if(strcmp(memoria_compartida[k].login, m2.login)==0){
strcpy(usAux.login, "");
memoria_compartida[k] = usAux;
}
}
sem(0, 1);
}
}
return 0;
}
cliente.c: En la función ‘main’:
cliente.c:121:4: aviso: declaración implícita de la función ‘shmget’ [-Wimplicit-function-declaration]
cliente.c:123:33: aviso: declaración implícita de la función ‘shmat’ [-Wimplicit-function-declaration]
cliente.c:187:7: aviso: declaración implícita de la función ‘shmdt’ [-Wimplicit-function-declaration]
SHMGET(3P) POSIX Programmer's Manual SHMGET(3P)
PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may
differ (consult the corresponding Linux manual page for details of Linux behavior), or the interface may
not be implemented on Linux.
NAME
shmget - get an XSI shared memory segment
SYNOPSIS
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
Cliente.c:1:21: error: sys/msg.h: No such file or directory
Cliente.c:6:21: error: sys/sem.h: No such file or directory
Cliente.c:9:21: error: sys/shm.h: No such file or directory
Cliente.c:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'keyLista'
Cliente.c:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'keySem'
Cliente.c: In function 'sem':
Cliente.c:71: error: storage size of 'operacion' isn't known
Cliente.c: In function 'main':
Cliente.c:100: error: 'keyLista' undeclared (first use in this function)
Cliente.c:100: error: (Each undeclared identifier is reported only once
Cliente.c:100: error: for each function it appears in.)
Cliente.c:102: error: 'IPC_CREAT' undeclared (first use in this function)
Cliente.c:109: error: 'IPC_NOWAIT' undeclared (first use in this function)
Cliente.c:113: error: 'keySem' undeclared (first use in this function)
Cliente.c:119: error: 'SETVAL' undeclared (first use in this function)
Juen escribió:Creo que esos #includes son solo para Linux, tendrás que buscar os equivalentes para Windows... o pasarte a Linux y dejar de tener problemas.
eh_cuidao escribió:muy buen tuto añado a favoritos y empiezo a leer,leer y leer
saludos!
kyo2009 escribió:Alguien se maneja bien en el tema funciones y procedimientos? La verdad es que hasta ahi llegue, y me gustaría ver si me ayudan en algo,
Aikaryu escribió:Saludos a todos! Puedo hacer una pregunta sobre una duda que tengo en Java por acá?
Thepucnic escribió:Gracias Blipi por el pedazo de tutorial que te has currao. Tengo una duda,no hace falta decir q acabo de empezar (jejejeje ), os pongo una captura de pantalla y mi pregunta es :
¿Por que me da error y me dice que no encuentra el fichero main.exe ?
https://www.dropbox.com/s/x2fz4rbxuiqsya1/resized_imagen.jpg
Willyn escribió:Aikaryu escribió:Saludos a todos! Puedo hacer una pregunta sobre una duda que tengo en Java por acá?
No creo que sea el sitio adecuado para consultarlo, tienes cientos de foros sobre el tema que probablmente resolveran tu problema mas rapidamente (no controlo java por ahora).Thepucnic escribió:Gracias Blipi por el pedazo de tutorial que te has currao. Tengo una duda,no hace falta decir q acabo de empezar (jejejeje ), os pongo una captura de pantalla y mi pregunta es :
¿Por que me da error y me dice que no encuentra el fichero main.exe ?
https://www.dropbox.com/s/x2fz4rbxuiqsya1/resized_imagen.jpg
Probablemente esto te este pasando porque a tu compilador le faltan cosas, como el main.exe intenta averiguar que has de descargar que no hayas echo ya. Yo para programar en C utilizo Geany que es muy ligero y cumple perfectamente su cometido, te lo recomiendo.
EDITO: Ahora que me fijo mejor el archivo que estas compilando se llama Main.cpp (que es C++ no C) y Main.exe debe de ser ese mismo archivo compilado, que por lo que sea no existe bien sea porque no has compilado (has ejecutado directamente) o porque el compilador no esta haciendo su trabajo.
Link descarga geany:
Un saludo!
Willyn escribió:Pues empecé con un tutorial que se llamaba "Aprendiendo C en 21 dias" y termine aprendiendo en clase en un ciclo superior, pero hay muchos tutoriales de calidad por la red, la web c.conclase.net esta bastante bien.
Si eres catalan o entiendes el catalan aqui tienes los PDFs de la teoria que nos dieron en clase pero vaya tampoco se profundiza mucho mas de lo que aqui lo ha echo blipi, alguna cosa mas como el tratamiento de ficheros con funciones como fopen/fwrite/fread, entorno grafico con Ncurses y poca cosa mas :
https://www.dropbox.com/s/eaaxmulf3nptma9/TeoriaC.zip
Cualquier duda, ya sabes, asi refresco.. xD
Un saludo!