elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda programa en C que encuentre y reemplace un índice numérico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda programa en C que encuentre y reemplace un índice numérico  (Leído 1,579 veces)
akakariko

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda programa en C que encuentre y reemplace un índice numérico
« en: 18 Septiembre 2017, 15:30 pm »

Buenas tardes, me gustaría cambiar un dato de un .txt (en realidad es para no tener que modificar a mano uno a uno el número del .html)

Os cuento, en un .html que he creado, hay una línea que contiene un índice, para que al pulsar un botón se pasen unas fotos hacia adelante y hacia atrás, el caso, es que al eliminar una de esas líneas con su respectivo indice, al pulsar el botón de la web sale que no se ha encontrado el archivo (cosa lógica), lo que ocurre es que como son 2345 números los que habría que reordenar (del 1 en adelante consecutivamente) a mano es un poco desesperante. Os pongo un ejemplo:


<aesto es una línea de codigo> <data-ind="1"
<besto es una línea de codigo> <data-ind="numero que os digo"
<cesto es una línea de codigo> <data-ind="5"
<desto es una línea de codigo> <data-ind="6"

Pues lo que me gustaría hacer es un script que abra el archivo en modo txt y me reenumere esos números tal que así:

<aesto es una línea de codigo> <data-ind="1">
<besto es una línea de codigo> <data-ind="2">
<cesto es una línea de codigo> <data-ind="3">
<desto es una línea de codigo> <data-ind="4">

He intentado hacerlo en C, pero no sé como hacer para que el programa sepa que solo quiero cambiar ese número de la palabra, también lo he intentado con perl, pero como no lo manejo bien, he desistido, he buscado programas que permitan hacer eso que os he comentado pero no he encontrado ninguno capaz de reenumerar de forma ascendente el número dentro de una expresión.


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.663


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Ayuda programa en C que encuentre y reemplace un índice numérico
« Respuesta #1 en: 18 Septiembre 2017, 17:27 pm »

Dado que el lugar (posición numérica con relación al inicio del texto) donde esta el dicho numero es variable, necesitas buscar por cadena "<data-ind=\"" y en cada encuentro poner el numero deseado he incrementar el contador hasta que ya no encontremos coincidencias.

Ejemplo:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4.  
  5. int main() {
  6. char *buscar = "<data-ind=\"";
  7. char *texto = "<a esto es una linea de codigo> <data-ind=\"1\"> <b esto es una linea de codigo> <data-ind=\"3\"><ce sto es una linea de codigo> <data-ind=\"5\"> <d esto es una linea de codigo> <data-ind=\"6\">";
  8. char *posicion = NULL;
  9. int contador = 0;
  10. posicion = strstr (texto,buscar); //Devuelve un puntero
  11. printf("Buscando \"%s\" en:\n%s\n",buscar,texto);
  12.  
  13. if(posicion != NULL) {
  14. do {
  15. contador++;
  16. printf("Coincidencia No: %i de %s en el texto en la posicion %i\n",contador,buscar,posicion-texto);
  17. posicion = strstr(posicion+1,buscar); //Devuelve un puntero
  18. }while(posicion != NULL);
  19. printf("Ya no hay coincidencias\n");
  20. }
  21. else {
  22. printf("La cadena \"%s\" no fue encontrada ni una sola vez\n",buscar);
  23. }
  24. return 0;
  25. }

Salida:

Código:
Buscando "<data-ind="" en:
<a esto es una linea de codigo> <data-ind="1"> <b esto es una linea de codigo> <data-ind="3"><ce sto es una linea de codigo> <data-ind="5">     <d esto es una linea de codigo> <data-ind="6">
Coincidencia No: 1 de <data-ind=" en el texto en la posicion 32
Coincidencia No: 2 de <data-ind=" en el texto en la posicion 79
Coincidencia No: 3 de <data-ind=" en el texto en la posicion 125
Coincidencia No: 4 de <data-ind=" en el texto en la posicion 172
Ya no hay coincidencias

Ya posteriormente tendrias que sustituir el numero


En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines