Hola buenas!!
He realizado una series de funciones que compilándolas con el GCC funcionan sin problema, pero necesito pasarlo al entorno de desarrollo Visual Studio 2012.
En una de las funciones, tengo que leer un fichero.
Preguntas:
PD: No se si debería haber puesto este tema en otro foro no de C
He realizado una series de funciones que compilándolas con el GCC funcionan sin problema, pero necesito pasarlo al entorno de desarrollo Visual Studio 2012.
En una de las funciones, tengo que leer un fichero.
Preguntas:
- El fichero no se el tamaño que puede tener una línea, de modo que abro el fichero una 1º vez , lo recorro entero y guardo el tamaño de la línea de mayor tamaño (tamMax) y lo igualo a N, pasando de tener un buffer gigantesco a uno apropiado.
Este procedimiento compilandolo en GCC funciona, pero en Visual Studio no.
error C2057: se esperaba una expresión constante en linea[N]
Como solución he visto que me plantean usar:
#define int N;
El problema es que al ser define no puedo cambiar su valor y por tanto, en la línea 30 salta error. - ¿Cómo hago para tratar usar la ruta relativa en el fichero? Desde el directorio actual quiero crear un directorio y dentro tener el .txt
Código (c) [Seleccionar]
#include "librerias.h"
int N;
#define CRT_SECURE_NO_WARNINGS
int leer_fichero_operComp()
{
N=20000;
FILE *p_fichero=NULL;
char linea[N];
int i=0,j=0,tam,tamMax=0;
char *ficheros[] = {"hola.txt","adios.csv"};
if((p_fichero=fopen(ficheros[0],"r"))==NULL)
{
printf("Error al abrir el fichero");
exit(-1);
}
else{
while( fgets(linea,N,p_fichero) != NULL)
{
if( linea[0] != '\0')
{
tam=strlen(linea);
if(tam > tamMax)
tamMax = tam;
}
}//while
fclose(p_fichero);
N=tamMax;
p_fichero=fopen(ficheros[0],"r");
while( fgets(linea,N,p_fichero) != NULL)
{
if( strlen(linea) > 1)
{
tam=strlen(linea);
sscanf(linea,"%[^\n]",linea);
printf("\n\t Linea %d :%s ",j,linea);
j++;
}
}//while
fclose(p_fichero);
}//else
return 0;
}
PD: No se si debería haber puesto este tema en otro foro no de C