Ayuda programa en C que encuentre y reemplace un índice numérico

Iniciado por akakariko, 18 Septiembre 2017, 15:30 PM

0 Miembros y 1 Visitante están viendo este tema.

akakariko

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.

AlbertoBSD

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:

#include<stdio.h>
#include<string.h>


int main() {
char *buscar = "<data-ind=\"";
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\">";
char *posicion = NULL;
int contador = 0;
posicion = strstr (texto,buscar); //Devuelve un puntero
printf("Buscando \"%s\" en:\n%s\n",buscar,texto);

if(posicion != NULL) {
do {
contador++;
printf("Coincidencia No: %i de %s en el texto en la posicion %i\n",contador,buscar,posicion-texto);
posicion = strstr(posicion+1,buscar); //Devuelve un puntero
}while(posicion != NULL);
printf("Ya no hay coincidencias\n");
}
else {
printf("La cadena \"%s\" no fue encontrada ni una sola vez\n",buscar);
}
return 0;
}


Salida:


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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW