C/Visual C - No corre en linux, pero si en windows

 
Vista:

No corre en linux, pero si en windows

Publicado por Cristian (1 intervención) el 29/10/2007 17:16:53
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct nodo{
int index;
char *word;
struct nodo *sig;
}Nodo;

Nodo* crear(int i,char palabra[]){
Nodo *nodo;
nodo=(Nodo*)malloc(sizeof(Nodo));
nodo->index=i;
strcpy(nodo->word,palabra);
nodo->sig=NULL;
return(nodo);
}

int main(){
Nodo *nodo;
int i=1;
char *palabra;
palabra=(char*)malloc(sizeof(char));
printf("Ingrese palabra: ");
scanf("%s",palabra);
nodo=crear(i,palabra);
printf("%d\t%s\n",nodo->index,nodo->word);
return;
}

Bueno es parte del codigo, pero en linux es en la primera parte donde me da error, en cambio en windows funciona de lo mas bien. Cual es el problema?¿
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No corre en linux, pero si en windows

Publicado por Tom (619 intervenciones) el 29/10/2007 20:43:12
Bueno, imagino que en Win funciona un poco de milagro :-)
No asignas espacio para word, así que al hacer el strcpy estás usando una zona de memoria peligrosa.

Nodo* crear(int i,char palabra[]){
Nodo *nodo;
nodo=(Nodo*)malloc(sizeof(Nodo));
nodo->index=i;
//strcpy(nodo->word,palabra);
nodo->word = strdup(palabra);
nodo->sig=NULL;
return(nodo);
}

Antes de liberar un nodo con free(), libera el espacio de word.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No corre en linux, pero si en windows

Publicado por Alejandro Varela (4 intervenciones) el 02/11/2007 15:49:35
no se con que lo compilaste en windows para que ande (visual c++ ?)
yo lo compilé con minGW usando Dev C++.

Para que al menos compile:
---------------------------------------
La penúltima línea "return;" no retorna nada y la función main retorna "int"

1) o bien ponés "void main(int argc, char ** argv)"
2) o ponés "return 0;"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar