1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / C (lenguajeC) Crear un vector dinámicamente al leer datos desde archivo malloc
« en: 19 de Febrero 2017, 23:36 »
Hola, el código que tengo lo que debe hacer es lo siguiente: abrir un archivo de texto que contiene números y guardarlos en un vector, luego mostrar esos datos que guardamos en dicho vector! Lo que quería saber es como hacer para asignar los valores que tengo de la variable "i" al vector que anteriormente había reservado en memoria. Luego de eso tengo que mostrar cada uno de los valores del vector de la siguiente manera:
v[1]= (Numero guardado en el archivo de texto)
v[2]=(Numero guardado en el archivo de texto)
v[3]=(Numero guardado en el archivo de texto)
v[4]=(Numero guardado en el archivo de texto)
...
Acá pongo el código:
v[1]= (Numero guardado en el archivo de texto)
v[2]=(Numero guardado en el archivo de texto)
v[3]=(Numero guardado en el archivo de texto)
v[4]=(Numero guardado en el archivo de texto)
...
Acá pongo el código:
Código: [Seleccionar]
int main(int argc, char* argv[])
{ int n;
char enter=10;
int i;
int r;
char a=0;
char b;
char x[15];
//define un puntero al manejador de archivos
FILE *fp;
//solicitar apertura del archivo
fp = fopen("Numeros.txt", "r");
if (fp==NULL){
printf("El archivo no existe\n");
}
else {
//determinar el tamaño del vector
n=0;
i=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
i++;
n=0;
}
}
else{
n++;
}
}
if(n>0){ i++;}
//creo el vector dinamicamente
int *v;
v = (int *)malloc(4*i);
printf("construi el vector de tamaño %d\n",i);
//es necesario reposicionar el puntero para leer de nuevo desde el principio
r= fseek(fp,0,SEEK_SET);
//leo el archivo caracter por caracter
n=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
x[n]=0;
n=0;
printf("%s\n",x);
i= atoi(x);
printf("i vale%d\n",i);
}
}
else{
x[n]=b;
n++;
}
}
if(n>0){
x[n]=0;
printf("%s\n",x);
i= atoi(x);
printf("i vale%d\n",i);
}
//es necesario reposicionar el puntero para leer de nuevo desde el principio
r= fseek(fp,0,SEEK_SET);
n=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
x[n]=0;
n=0;
i= atoi(x);
}
}
else{
x[n]=b;
n++;
}
}
if(n>0){
x[n]=0;
i= atoi(x);
//Asignar los valores al vector que reservamos
}
r= fclose(fp);
return 0;
}