Autor
|
Tema: Cambiar coma por punto en un archivo .txt (Leído 11,990 veces)
|
fafafa01
Desconectado
Mensajes: 82
|
Hola como bien dice el titulo, tengo un archivo .txt así: 45,678 67,890 y yo quiero que queden así: 45.678 67.890 mi idea es, aprovechando que se que el caracter 8 en ascii es retroceso , el 44 la coma y el 46 el punto hacer esta función: #include <stdio.h> #include <stdlib.h>
void main (void) { FILE *archivo; int c;
archivo=fopen("varx.txt","r+"); c=fgetc(archivo); while (c != EOF) { if (c==44) { fputc(8,archivo); fputc(46,archivo); } c=fgetc(archivo); } fclose(archivo); }
el problema es que el archivo no se modifica, si alguien sabe que es lo que esta mal en el código y me lo dice me serviría de mucho, saludos.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
En vez de usar números mágicos utiliza directamente los caracteres entre comillas simples. Por otra parte, en vez de intentar ir a atrás insertando el carácter de control '\b' directamente atrasa una posición el puntero del archivo. Con todo esto el código queda como sigue: if (c==',') { fseek(archivo , -1, SEEK_CUR ); }
|
|
|
En línea
|
|
|
|
fafafa01
Desconectado
Mensajes: 82
|
No logro poder modificarlo.
|
|
|
En línea
|
|
|
|
fary
|
Hola como bien dice el titulo, tengo un archivo .txt así: 45,678 67,890
y yo quiero que queden así: 45.678 67.890
¿Cual se supone que es la diferencia despues de modificar el archivo?
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
fafafa01
Desconectado
Mensajes: 82
|
cambiar la coma por el punto. ¿Cual se supone que es la diferencia despues de modificar el archivo?
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Buenas, si he entendido bien lo que quieres es leer el contenido del archivo y sustituir su contenido por el mismo pero cambiando solo las comas por puntos. Con el código de MAFUS debería bastar, porque el fputc() sobreescribe el valor que se encuentra en esa posición. Cada fgetc() mueve el puntero una posición adelante para continuar leyendo, cuando encuentras una ',' usas fseek(archivo, -1, SEEK_CUR) para que vuelva atrás y no pase al siguiente caracter y entonces con fputc('.',archivo), escribes '.' en la posición de la ',' por lo que quedaría sobreescrita. Si es un fichero de texto entonces no lo abras como binario usa "rt" en vez de "r+". Un saludo. #include <stdio.h> #include <stdlib.h> void main (void) { FILE *archivo; int c; archivo =fopen("varx.txt","rt");while (c != EOF) { if (c==',') { fseek(archivo , -1, SEEK_CUR ); } } }
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
fafafa01
Desconectado
Mensajes: 82
|
Muchas gracias, creo que el error entonces seria que use el "r+". saludos. Buenas, si he entendido bien lo que quieres es leer el contenido del archivo y sustituir su contenido por el mismo pero cambiando solo las comas por puntos. Con el código de MAFUS debería bastar, porque el fputc() sobreescribe el valor que se encuentra en esa posición. Cada fgetc() mueve el puntero una posición adelante para continuar leyendo, cuando encuentras una ',' usas fseek(archivo, -1, SEEK_CUR) para que vuelva atrás y no pase al siguiente caracter y entonces con fputc('.',archivo), escribes '.' en la posición de la ',' por lo que quedaría sobreescrita. Si es un fichero de texto entonces no lo abras como binario usa "rt" en vez de "r+". Un saludo. #include <stdio.h> #include <stdlib.h> void main (void) { FILE *archivo; int c; archivo =fopen("varx.txt","rt");while (c != EOF) { if (c==',') { fseek(archivo , -1, SEEK_CUR ); } } }
tampoco me anda Muchas gracias, creo que el error entonces seria que use el "r+". saludos.
|
|
« Última modificación: 17 Mayo 2016, 14:40 pm por Eternal Idol »
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Haz el favor, prueba el código que puse y dime si anda.
Postea el nuevo código, NO solo cambia el "r+" sino más cosas.
En caso de que no funcione dinos cual es el mensaje de error y si no le hay verifica que el archivo se abre correctamente.
Saludos.
|
|
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
fafafa01
Desconectado
Mensajes: 82
|
no me tira ningún error, es como que se cuelga y tengo que cerrar el programa con ctrl+c. acá el código: #include <stdio.h> #include <stdlib.h>
void main (void) { FILE *archivo; int c;
archivo=fopen("varx.txt","rt"); if (archivo == NULL){
printf("\nError de apertura del archivo. \n\n"); } else { c=fgetc(archivo); while (c != EOF) { if (c==',') { fseek(archivo, -1, SEEK_CUR); fputc('.',archivo); } c=fgetc(archivo); } } fclose(archivo); }
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Coloca fflush después de una operación de escritura si luego vas a hacer otra lectura. Además, es preferible que utilices r+, pues la 't' no siempre stá soportdada, y en este caso, realmente no va a cambiar nada. #include <stdio.h> #include <stdlib.h> int main() { FILE *archivo; int c; archivo =fopen("asd.txt","r+"); if (archivo == NULL){ printf("\nError de apertura del archivo. \n\n"); } else { while (c != EOF) { if (c==',') { fseek(archivo , -1, SEEK_CUR ); } } } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Punto y coma
Programación C/C++
|
@synthesize
|
4
|
3,672
|
9 Julio 2010, 10:25 am
por do-while
|
|
|
Ayuda con la utilización del punto y coma
Foro Libre
|
Tokes
|
4
|
6,929
|
13 Diciembre 2011, 04:29 am
por Unbr0ken
|
|
|
reemplazar la coma decimal por el punto decimal
Programación C/C++
|
niko26.m
|
2
|
4,499
|
3 Agosto 2013, 03:06 am
por aguml
|
|
|
Poner coma en vez de un punto
.NET (C#, VB.NET, ASP)
|
Meta
|
2
|
3,463
|
4 Abril 2022, 07:14 am
por Meta
|
|
|
Voy a enseñar a programar a mi sobrino [solucionado] me faltaba el punto y coma despues de instanciar
PHP
|
enrique4480
|
4
|
5,122
|
26 Julio 2024, 01:52 am
por enrique4480
|
|