Tema destacado: Grupo de acebook de elhacker.net
Autor
|
Tema: Problemita con g++ (Leído 1,606 veces)
|
sprlydm
Desconectado
Mensajes: 2
|
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: #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
Mensajes: 439
Ö
|
pues a mi me dio este error de compilación espero te sirva 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
Mensajes: 269
As I Walk Through The Valley Of The Shadow Of Dead
|
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
Mensajes: 762
Yo no la vote, pero me la tengo que aguantar igual
|
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. "%s" en scanf no se usa & antes de la variable
Juas, muy bueno char nombre[100]; scanf("%s", &nombre[0]);  edito: porque hay otra que también está buena: 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. 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
Mensajes: 2
|
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
Mensajes: 680
...I have become comfortably numb...
|
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?
"%s" en scanf no se usa & antes de la variable Juas, muy bueno char nombre[100]; scanf("%s", &nombre[0]);  edito: porque hay otra que también está buena: 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
Mensajes: 762
Yo no la vote, pero me la tengo que aguantar igual
|
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. 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
Mensajes: 795
Algunos pájaros no pueden ser enjaulados...
|
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::.
|
|
|
|
|