Hola, resulta que estaba practicando algo con archivos, y se me ocurrió hacer 2 procedimientos para leer línea a línea y char a char... En fin, este es el code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Lee_Caracter(char *RUTA);
void Lee_Lineas(char *RUTA);
void Menu(void);
char *itoa(int val
, int base
);
void Limpiar_Buffer(void)
{
}
int main()
{
int opt;
char *ruta_local = "texto.txt";
Menu();
Limpiar_Buffer();
while(opt != 0)
{
switch(opt)
{
case 1:
{
Lee_Caracter(ruta_local);
break;
}
case 2:
{
Lee_Lineas(ruta_local);
break;
}
default:
break;
}
Menu();
Limpiar_Buffer();
}
return 0;
}
char* itoa(int val
, int base
){ static char buf[32] = {0};
int i = 30;
for(; val && i ; --i, val /= base)
buf[i] = "0123456789abcdef"[val % base];
return &buf[i+1];
}
void Menu(void)
{
puts("\t**** MENU ****\t"); puts("1- Leer caracter a caracter"); puts("2- Leer linea a linea"); }
void Lee_Caracter(char *RUTA)
{
FILE *fp;
char buffer;
if(!fp)
puts("Error al intentar abrir archivo"); else
while((buffer
= getc(fp
)) != EOF
) }
void Lee_Lineas(char *RUTA)
{
FILE *fp;
char *buffer;
char *mi_eof = NULL;
if(!fp)
puts("Error al intentar abrir archivo"); else
{
buffer
= (char *)(malloc(sizeof(char) * 100)); fgets(buffer
, sizeof(char) * 100, fp
);
while(strstr(buffer
, mi_eof
) != NULL
); {
buffer
= (char *)(malloc(sizeof(char) * 100)); fgets(buffer
, sizeof(char) * 100, fp
); }
}
}
El problema está en mi función atoi, al compilar:
lectura.c: In function 'Lee_Lineas':
lectura.c:89: warning: passing argument 1 of 'atoi' makes pointer from integer without a cast
lectura.c:89: error: too many arguments to function 'atoi'
lectura.c:89: warning: assignment makes pointer from integer without a cast
No puedo resolverlo.
Ahora bien, tengo una duda más, está bien la forma en que busco el EOF del archivo, en la función Lee_Lineas()?
EDITADO: La primera duda resuelta, estaba dormido y cambié itoa por atoi
Ahora el problema es que la función Lee_Lineas no funciona
CORREGIDO: while(strstr(buffer, mi_eof) == NULL)
Creo que el problema está en que no incremento el puntero para leer el archivo.