Dev - C++ - (ficheros ) me peta y no doy con el error

   
Vista:

(ficheros ) me peta y no doy con el error

Publicado por mau (1 intervención) el 13/06/2017 15:54:41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
 
int main(int argc, char *argv[])
{
    char matricula[20],cadena[80],euros[10];
    FILE *p,*sortida;
    int importmulta, pendent=0, cobrat=0, k, conta=0, x;
 
    matricula[0]='*';
    matricula[1]='\0';
    strcat(matricula,argv[1]);
    strcat(matricula,"*");
 
    p=fopen("trafic.dat","r");
    sortida=fopen("sortida.dat","w");
 
        while(!feof(p))
        {
            fgets(cadena,80,p);
 
            if(strstr(cadena,matricula)!=NULL)
            {
                fputs(cadena,sortida);
 
                for(k=0,conta=0;cadena[k]!='\0'; k++)
                {
                    if (cadena[k]=='*')
                        conta++;
                    if (conta==2)
                    {
                        k++;
                        for(x=0; cadena[k]!='/';k++,x++)
                        {
 
                        euros[x]=cadena[k];
                        }
                        euros[x]='\0';
                        break;
                    }
                }
                importmulta=atoi(euros);
                if (strncmp(cadena,"SI",2) ==0)
                {
                    cobrat+=importmulta;
                }
                else
                {
                    pendent+=importmulta;
                }
            }
 
        }
        fprintf(sortida,"\nImport pendent de cobrament.: %d", pendent);
        fprintf(sortida,"\nImport cobrat..........................: %d", cobrat);
        fclose(p);
        fclose(sortida);
 
 
    return 0;
 
 
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gregory

(ficheros ) me peta y no doy con el error

Publicado por gregory (34 intervenciones) el 14/06/2017 01:07:06
primero arregla esto y me dice.

1
2
3
4
5
6
7
8
9
10
11
12
for(k=0,conta=0;cadena[k]!='\0'; k++)//si k ya esta sumandose
{
    if (cadena[k]=='*')
        conta++;
    if (conta==2)
    {
        k++;//porque hacerlo otra vez
        for(x=0; cadena[k]!='/';k++,x++)//otra vez y aqui este es el mas grave no tiene sentido por alli debe estar el error. mi teoria es que por eso te da error. porque tal ves este bucle no tenga fin. 
        {
 
            euros[x]=cadena[k];
        }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de gregory

(ficheros ) me peta y no doy con el error

Publicado por gregory (34 intervenciones) el 14/06/2017 01:09:08
Tambien me gustaria que me djiera que es lo que quieres hacer. por lo que vi lees un archivo busca algo y lo escribe en el otro archivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

(ficheros ) me peta y no doy con el error

Publicado por agustin (522 intervenciones) el 14/06/2017 08:17:36
Por lo que pude entender busca dos asteriscos y copia lo que está teas ellos hasta que encuentra '/'. ¿y si ese carácter no está? A saber lo que lee.
Eso mismo que haces se puede hacer buscando con strstr para encontrar primero los dos asteriscos y luego el '/' con strchr y luego copias lo que hay en medio con strcpy.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Revisar política de publicidad