Lenguaje C: fscanf

Zany_666
19 de Abril del 2010
Hola, quería preguntaros si veis algún error en la siguiente instrucción:

while (fscanf(punteroF,"%s %s %s",aux[0],argv.fIn,argv.fOut) != EOF){
//Trato de cada línea
}

Lo que quiero hacer es leer hasta final de fichero línea a línea. Este fichero tiene en cada línea 3 palabras separadas por espacios. Leo la primea cadena y la guardo en la primera variable, leo la segunda, tras el espacio y la guardo en la segunda... y así con la tercera

punteroF es de tipo FILE, y es el valor devuelto al hacer un fopen() (que hace correctamente)
argv.fIn y argv.fOut son cadenas de caracteres (char cadena[100];)
aux[0] es la primera posición de una variable declarada como char *aux[2];

Mi problema es que al hacer está instrucción mi programa me da un fallo de segmentación, alguien podría ayudarme?

Gracias por adelantado

Capitan Kirk
19 de Abril del 2010
Quizá deberías postear algo más de código, el error te lo presenta en esta línea pero puede haberse generado en otra parte.

A falta de más información, parece que tu error es éste:

Según indicas, has declarado aux como un array de dos punteros a carácter. Al compilar, estos elementos contendrán, bien el valor NULL, bien un valor indeterminado (depende del compilador y de dónde se han declarado). Si no les asignas un valor "bueno" (es decir, que apunten a una cadena de caracteres que ya tengas en tu programa), al utilizarlo de la manera en que lo has hecho te encuentras con que estarás intentando escribir en una dirección desconocida (en la que no sabes lo que hay) o, lo más probable por el tipo de error que te indica, una dirección no válida o "prohibida".

Si lo que querías es un array de dos cadenas de caracteres, tendrías que poner

char aux[2][100];

(dos cadenas de 100 caracteres).

A falta de más información, es cuanto puedo indicarte. Saludos,

Zany_666
19 de Abril del 2010
Lo he solucionado haciendo un malloc(). gracias por tu respuesta!