Autor
|
Tema: Problemas con el compilador [Solucionado] (Leído 6,807 veces)
|
DaniekL
Desconectado
Mensajes: 14
|
Hola. Verán, estoy haciendo un programa que lee una lista de palabras y las compara con una lista de letras. Aquí de lo muestro //drawsomething.c #include <stdio.h> #include <string.h> #include <stdlib.h> #define PATH = "/home/daniel/.drawsom/wordlist" //El PATH del fichero //Funcion que muestra el uso y sale void usage(char *s) { printf("\t-----Usage-----\n\nTo add a word use: %s -a <the_word>\nTo find a word use: %s <length_of_the_word> <the_possible_letter>\n", s , s ); } //Añade una nueva palabra a la lista void add(char *word) { FILE *wordlist; wordlist = fopen(PATH , "w"); if(wordlist == NULL) { printf("[Fatal Error!!] while opening wordfile\nAborting...\n"); } fwrite(word , sizeof(word ), 1, wordlist ); } //Funcióm que busca la palabra void find(int tamano, char *l) { FILE *wordlist; char letters[13], *aux; int check, i; /*check comprueba si la palabra leida contiene las letras que pasamos como argumento. Si check es mayor o igual que el tamaño de la palabra, esta cumple las caracteristicas*/ letters[12] = '\0'; wordlist = fopen(PATH , "r"); if(wordlist == NULL) { printf("[Fatal Error!!] while opening wordfile\nAborting...\n"); } aux = fgets(NULL , 15, wordlist ); while(aux != NULL) { for(i = 0; i < 12; i++) { if(strstr(aux , letters [i ]) != NULL ) { check++; } } if(check >= tamano) { } } aux = fgets(NULL , 15, wordlist ); } } int main(int argc, char *argv[]) { if(argc < 3) usage(argv[0]); add(argv[2]); else find (atoi(argv [1]), argv [2]); return 0; }
El problema viene cuando lo compilo. Uso el gcc y me arroja este resultado: drawsomething.c: En la función ‘add’: drawsomething.c:13:19: error: expected expression before ‘=’ token drawsomething.c: En la función ‘find’: drawsomething.c:28:19: error: expected expression before ‘=’ token drawsomething.c:37:5: aviso: el paso del argumento 2 de ‘strstr’ crea un puntero desde un entero sin una conversión [activado por defecto] /usr/include/string.h:342:14: nota: se esperaba ‘const char *’ pero el argumento es de tipo ‘char’ He revisado los errores pero no veo el fallo y como el compilador lleva tiempo haciendo cosas raras pues a lo mejor es un fallo (sin ofender al gran Stallman ) por que ademas, sale que tengo errores en la libreria string.h. Si alguien tiene la solución al problema (que me jugaría el brazo a que es una chorrada) le agradeceía mucho que me ayudase. Gracias. Un abrazo.
|
|
« Última modificación: 9 Abril 2012, 23:23 pm por DaniekL »
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! El error esta aqui: #define PATH = "/home/daniel/.drawsom/wordlist"
Te sobra el =Deberia ser: #define PATH = "/home/daniel/.drawsom/wordlist"
Cuando utilizas #define para definir constantes se hace asi: #define CONSTANTE VALOR no #define CONSTANTE = VALOR ¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Beakman
|
En vez de poner esto: #define PATH = "/home/daniel/.drawsom/wordlist" //El PATH del fichero
Poné esto: #define PATH "/home/daniel/.drawsom/wordlist" //El PATH del fichero
Y acá: if( strstr( aux , letters [ i ] ) != NULL ) {
La función strstr tiene que recibir dos cadenas, y vos le estás pasando una cadena y un carácter. Tenés que hacer una cadena con ese carácter y el ' \0'.
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
XD, es cierto, mira que lo he dicho, pero se me ha olvidado quitar el =. Hay sueño...
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Beakman
|
Jaja. Yo llegué tarde.
|
|
|
En línea
|
|
|
|
soyloqbuskas
Desconectado
Mensajes: 219
¡El conocimiento es de todos!
|
¡Buenas DaniekL! Ya he dado con tus problemas. El 1º esta en la definicion del PATH. No puedes definir el PATH = VALOR, lo tienes que definir como un char *. Cambia esta linea: #define PATH = "/home/daniel/.drawsom/wordlist" //El PATH del fichero
Por esta otra: char * PATH = "/home/daniel/.drawsom/wordlist"; //El PATH del fichero
Y el 2º error lo tienes en el strtstr(). Esta funcion se define de esta manera: char *strstr(const char *s1, const char *s2); Siendo s1 y s2 2 cadenas de caracteres, y lo que hace es buscarte la cadena s1 dentro de la cadena s2. Por tanto no hace falta que recorrars tu la cadena s2 (s2 ).
Por tanto, tu funcion find() ahora queda asi:
//Funcióm que busca la palabra void find(int tamano, char *l) { FILE *wordlist; char letters[13], *aux; int check, i; /*check comprueba si la palabra leida contiene las letras que pasamos como argumento. Si check es mayor o igual que el tamaño de la palabra, esta cumple las caracteristicas*/ letters[12] = '\0'; wordlist = fopen(PATH , "r"); if(wordlist == NULL) { printf("[Fatal Error!!] while opening wordfile\nAborting...\n"); } aux = fgets(NULL , 15, wordlist ); while(aux != NULL) { if(strlen(aux ) == tamano ) { // quitamos el for() if(strstr(aux , letters ) != NULL ) { //sustituimos el puntero a caracter letters[i] por letters check++; } if(check >= tamano) { } } aux = fgets(NULL , 15, wordlist ); }
Un saludo.
|
|
|
En línea
|
"Si tienes 1 manzana y yo tengo otra manzana... y las intercambiamos, ambos seguiremos teniendo 1 manzana. Pero...si tu tienes 1 idea y yo tengo otra idea... y las intercambiamos, ambos tendremos 2 ideas."
George Bernard Shaw
|
|
|
DaniekL
Desconectado
Mensajes: 14
|
Ostias, es verdad. No me extraña que tuviese ese error, llevaba siglos sin usar #define y respecto al fallo en string.h. Porque no se que puede ser...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problemas con fechas(Solucionado)
Programación Visual Basic
|
Zeroql
|
1
|
1,189
|
30 Noviembre 2007, 20:03 pm
por Zeroql
|
|
|
Problemas con shell (Solucionado)
Programación Visual Basic
|
Zeroql
|
3
|
1,651
|
11 Febrero 2008, 22:50 pm
por ~~
|
|
|
problemas con el include (Solucionado)
PHP
|
Zeroql
|
3
|
1,674
|
18 Junio 2008, 21:49 pm
por Zeroql
|
|
|
[solucionado]problemas con mid vb.net
.NET (C#, VB.NET, ASP)
|
CH4ØZ
|
3
|
4,866
|
1 Febrero 2011, 01:43 am
por CH4ØZ
|
|
|
(SOLUCIONADO) Problemas con DIV
PHP
|
dimitrix
|
0
|
1,738
|
5 Abril 2012, 16:57 pm
por dimitrix
|
|