Autor
|
Tema: Programa para revisar los errores de sintaxis de un programa en C. (Leído 12,706 veces)
|
MAFUS
Desconectado
Mensajes: 1.603
|
Vale , ahora dos cosas más, tres: calloc es un poco lenta puew además de adquirir memoria la pone a 0. Como llenas toda esta memoria con el contenido del archivo no hace falta ponerla a 0, por tanto puedes usar malloc.
Ya qu adquieres memoria con malloc deberías liberarla, es una buena práctica, despues de usarla. En main debes usar free para liberar archivoMem.
De igual forma tienes abierto un archivo en ptrArchivo. Debes liberarlo cuando termines de usarlo con fclose.
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Lo que me sugieres que haga no está contemplado en las lineas 19 y 20.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Tienes razón No lo vi.
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Tengo casi todo preparado para hacer lo más importante que es corregir errores de sintaxis pero ete aquí que no se me cae una misera idea, preguntarle si hay algo escrito como un tutorial sobre el tema ni lo pienso porque busque bastante en internet y nada, salvo que aya buscado equivocadamente. - Les dejo una pregunta para tratar de que me den un empujoncito para comenzar, si la primera línea es: include <stdio.h>
Como harían para encontrar el error. - Saludos.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Es algo complicado. C no trabaja con comprobaciones sin más. Diría que es más como un autómata finito. Cuando dudes, fíjate en las salidas que generaría tu compilador: a < b >
Da error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token Ha encontrado un nombre que no es una palabra reservada, y espera una de esas cadenas después. Hombre, no es por ponerte trabas, pero hacer un analizador de C para todos los casos es complicado. Tendrás que tener un montón de palabras y construcciones en cuenta y estudiar a fondo las estructuras que posee. Una cosa es verificar los comentarios, llaves, corchetes, parantesis y comillas, y otra ya es analizar cada palabra xd
|
|
|
En línea
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
Les dejo una pregunta para tratar de que me den un empujoncito para comenzar, si la primera línea es: include <stdio.h>
Como harían para encontrar el error. - En primer lugar en el enunciado del ejercicio no se menciona detectar este tipo de errores, te aconsejo resolver primero lo propuesto luego intentar ir mas alla. Te puedo dar una idea de como lo puedes encarar, lo que puedes hacer es usar contadores para cada caso establecerlos a cero. Luego por ejemplo si encuentras una llave de apertura incrementar el contador correspondiente y decrementarlo si encuentras una llave de cierre, posteriormente verificar el contador Saludos
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola a todos. - Gracias Iván por tu participación, siempre con buen aporte, geeke tienes toda la razón me estaba yendo por las ramas, me diste un impulso importante ya que estaba por dejarlo por un tiempo seguir con el libro y retomarlo luego ya que continuar con esto me va a dar mucho conocimiento, bueno a pensar y practicar, a una última cosa, debería tener mucha mala suerte si encuentro un código entre comillas con un solo paréntesis y si ocurre habrá que darse idea, tal vez cuando encuentre comillas dobles debería saltar hasta encontrar la siguiente comillas. - printf( "\n Hola (mundo\n\n" );
Saludos
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Las comillas las puedes tratar como cualquier paréntesis o llave. Las únicas diferencias, es que se abre y se cierra con el mismo símbolo, y la más importante: cuando haya una comilla, ignorarás los paréntesis, llaves y corchetes que haya hasta que se cierren las comillas de nuevo. Ten en cuenta también, los caracteres de escape. Por ejemplo: "abc\"sdf"
O un pelín más complejo: "abc\\" "abc\\\"sdf"
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola a todos. - Continuando con mi proyecto me encuentro con la necesidad de guardar la línea donde se encuentra por Ej. una apertura de llave para luego si encuentro un cierre de la misma poner el contador a cero en el correspondiente elemento del vector contador(geeke), pero si no encuentro el cierre de la misma es un error y debo mostrar el mensaje y una referencia en que línea se encuentra el mismo, para ello tengo que utilizar memoria dinámica ya que si bien conozco la cantidad de columnas no así la cantidad de filas (renglones), porque puede ocurrir que haya 3 aperturas de llaves y luego se encontrarían los cierre de las mismas (o no) y de no ser así necesito las referencias de las líneas donde se encuentran. - Hasta aquí me parece que estoy bien rumbado pero la cuestión es que no sé cómo hacer una tabla con memoria dinámica, para un arreglo lo hice de esta manera(código a continuación) y todo funciona pero para un matriz no me doy idea y no pude encontrar ejemplos en internet, encontré algunos pero es sabiendo de antemano las filas y las columnas. - void ingreso( void ){ size_t ingresos, contador = 0, n, ok, ch; int *numeros = NULL, *mas_numeros = NULL; do{ do{ printf( "\n Ingrese un numero entero (0 para finalizar).....: " ); ok = scanf( "%lu", &ingresos ) == 1 && ingresos >= 0; while( (ch = getchar()) != EOF && ch != '\n'); if( ok == 0 ){ printf( "\n El ingreso es incorrecto, intentelo nuevamente...\n\n\t"); } }while( !ok ); contador++; mas_numeros = (int*)realloc(numeros , contador * sizeof(int)); if( mas_numeros != NULL ){ numeros = mas_numeros; numeros[contador-1] = ingresos; } else{ safeFree( numeros ); puts( "Error en asignar memoria....." ); } }while( ingresos != 0 ); limpiarPantalla(); printf ("\n Numeros introducidos.....: "); for( n=0; n < contador - 1; n++ ) ordenar( contador, numeros ); safeFree( numeros ); }
Espero como siempre deseen ayudarme.- Saludos.
|
|
« Última modificación: 12 Octubre 2016, 21:57 pm por NOB2014 »
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola, ¿cómo están? Parece que lo logré, el programa que dejo es para practicar es obvio que podía haber asignado toda la memoria de una vez y esta de más aclararles que utilizo un arreglo de una dimensión como si fuera de dos. #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ){ int fil=1, col=5, i, j, x=col, *tmp=NULL ; int a[] = {33,18,5,2,19,306,202,88,31,64}; int *ptrArr = (int *)malloc( fil *col *sizeof(int) ); if( ptrArr != NULL ){ fil++; x += col; if( tmp != NULL ){ ptrArr = tmp; tmp = NULL; x=0; for( i=0; i<fil; i++ ){ for( j=0; j<col; j++ ){ ptrArr[fil*i+j] = a[x]; printf( "%3d ", ptrArr [fil *i +j ] ); x++; } } }else{ printf( "\n No se pudo reasignar memoria" ); return EXIT_FAILURE; } }else{ printf( "\n No se pudo reservar memoria" ); return EXIT_FAILURE; } ptrArr = NULL; return EXIT_SUCCESS; }
Saludos.
|
|
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Podrían revisar este pseudocodigo ne busca de errores?
Programación General
|
sexyser
|
1
|
4,041
|
31 Mayo 2010, 22:45 pm
por sexyser
|
|
|
me pueden revisar a ver si esta bien este programa en c++
Programación C/C++
|
eduardo17445
|
1
|
2,720
|
17 Junio 2012, 14:11 pm
por 0xDani
|
|
|
Necesito ayuda para resolver estos errores en este programa de C
Programación C/C++
|
Xcution
|
0
|
1,710
|
29 Noviembre 2013, 03:44 am
por Xcution
|
|
|
me podrian revisar este programa de listas m da error en las ultima llave
Programación C/C++
|
eduardo17445
|
1
|
1,902
|
29 Abril 2015, 14:49 pm
por eferion
|
|
|
Revisar programa python
Scripting
|
987123564
|
2
|
2,378
|
13 Agosto 2016, 00:18 am
por 987123564
|
|