elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:57  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problemita con g++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemita con g++  (Leído 1,606 veces)
sprlydm

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problemita con g++
« en: 7 Noviembre 2008, 01:19 »

Bueno primero me presento, soy un noob que sabe algo de c++ y actualmente estoy programando c/c++ en linux. El otro día me surgio un problema bastante raro y nose como solucionarlo.
Aca el codigo:
Código:
#include <iostream.h>
#include <stdio.h>
#include <string.h>

using namespace std;

int main(){
printf("esciba destino\n");
char * dest;
char * word;
scanf("%s",&dest);
printf("escriba la palabra que desea buscar\n");
scanf("%s",&word);
//printf("%s",word);
FILE *b = fopen(dest,"r");
char  megatext[5000][500];


long a=0;

//popen("cp ./a ./a2", "r");

while(a<10){
fscanf(b,"%s", megatext[a][0]);

/*for(int c=0;c<10;c++){
if(megatext[a][c]==word[0] && megatext[a][c+1]==word[1] && megatext[a][c+2]==word[2] && megatext[a][c+3]==word[3]){
}*/


if(strcmp(megatext[a],word)==0){

cout<<"\""<<word<<"\" encontrado"<<endl;
cout<<"se enceuntra en la palabra nº "<<a+1<<endl;
}

a++;
cout<< megatext[a];
}

}

Luego lo compilo, al insertar el directorio no me da ningun problema pero cuando pongo la palabra a buscar me da el error "Violación de segmento".
Compile otro codigos con g++ que tubieran lines de scanf(), y no dan error.  Tmb probe de sustituir scanf() x cin pero me dio el mismo error

Gracias desde ya
Saludos


En línea
Sin Nick xD


Desconectado Desconectado

Mensajes: 439


Ö


Ver Perfil
Re: Problemita con g++
« Respuesta #1 en: 7 Noviembre 2008, 01:55 »

pues a mi me dio este error de compilación espero te sirva


Código:
nada.cpp: In function ‘int main()’:
nada.cpp:11: aviso: el formato ‘%s’ espera el tipo ‘char*’, pero el argumento 2 es de tipo ‘char**’
nada.cpp:13: aviso: el formato ‘%s’ espera el tipo ‘char*’, pero el argumento 2 es de tipo ‘char**’
nada.cpp:24: aviso: el formato ‘%s’ espera el tipo ‘char*’, pero el argumento 3 es de tipo ‘int’

PD: no sabia como ponerle así que le puse nada xD


En línea

Yo solo creería en un Dios que supiese bailar.
Rozor

Desconectado Desconectado

Mensajes: 269


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
Re: Problemita con g++
« Respuesta #2 en: 7 Noviembre 2008, 08:22 »

esta todo mal empezando por los header en que programas en C o C++ ¿? :) con "%s" en scanf no se usa & antes de la variable etc... etc... :)
En línea

out in the streets they call it murder....
Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Problemita con g++
« Respuesta #3 en: 7 Noviembre 2008, 13:27 »

    Tampoco es que está todo mal... los header es cierto estan medio mal, en c++ no se usan los .h en include, es más es raro que g++ no te lance un warning, eso no es un error muy grave después de tod (programas sencillos como éstos no pasa nada).

    Tu programa tira error porque no pedís memoria para dest y word, que son variables puntero, las cuales el compilador no las inicializa y es por eso que te tira una "violación de segmento". Otra cosa, se coherente, no mezcles printf y cout (o scanf y cin) a menos que realmente sepas lo que estás haciendo, complica bastante la lectura, siempre son recomendables cin/cout sobre scanf/printf.
Cita de: Rozor
"%s" en scanf no se usa & antes de la variable
Juas, muy bueno
Código
char nombre[100];
scanf("%s", &nombre[0]);
 
:¬¬

edito: porque hay otra que también está buena:
Código
int *a = new int;
scanf("%d", a);
 
« Última modificación: 7 Noviembre 2008, 13:29 por Anibal784 » En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
sprlydm

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problemita con g++
« Respuesta #4 en: 7 Noviembre 2008, 15:47 »

Gracias x las respuestas, ya arregle el codigo y ahora funciona bien
como dijeron el problema era las cabeceras y tmb x mezclar printf con cout.
Otra cosita no me da error el g++ xq hice una copia de iostream y la renombre iostream.h

Gracias y saludos
En línea
GroK


Desconectado Desconectado

Mensajes: 680


...I have become comfortably numb...


Ver Perfil
Re: Problemita con g++
« Respuesta #5 en: 8 Noviembre 2008, 20:02 »

Otra cosita no me da error el g++ xq hice una copia de iostream y la renombre iostream.h

???

Para que haces eso? No es mas facil poner #include <iostream> a secas?



Cita de: Rozor
"%s" en scanf no se usa & antes de la variable

Juas, muy bueno
Código
char nombre[100];
scanf("%s", &nombre[0]);
 
:¬¬

edito: porque hay otra que también está buena:
Código
int *a = new int;
scanf("%d", a);
 

Rozor tiene razon, cuando pasas "%s" como argumento a scanf, el espera una referencia (puntero) a una cadena de caracteres, y a esos efectos:

nombre == &nombre[0]

Asi que eso no sirve como contraejemplo. Y la otra, aparte de que es una forma bastante rara de leer un entero, no contradice nada de lo dicho, porque "a" es un puntero.

Saludos
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Problemita con g++
« Respuesta #6 en: 9 Noviembre 2008, 13:32 »

Citar
Rozor tiene razon, cuando pasas "%s" como argumento a scanf, el espera una referencia (puntero) a una cadena de caracteres
si y no,
si porque está muy bien lo que decís vos, y
noporque Razor no dice eso, Razor dice que cuando se usa "%s" no se pasa & antes de la variable, lo cual está mal, uno puede pasar & a la variable
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
AxXioma


Desconectado Desconectado

Mensajes: 795


Algunos pájaros no pueden ser enjaulados...


Ver Perfil
Re: Problemita con g++
« Respuesta #7 en: 9 Noviembre 2008, 13:36 »

Un consejo, no reserves tanta memoria, aplica memoria dinámica de C++ para que no se quede mucha de la que reservas sin utilizar.

Saludos.
En línea





.::Cuanto mas conocimiento adquieres, más te das cuenta del que hay a tu alrededor::.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines