Jump to content
Fórum Script Brasil
  • 0

Thiago lablonsk

Question

O algoritmo serve para ler e escrever em memoria secundaria. So que quando o a.complemento esta funcionando o resto para ( gravando tudo no arquivo com letras japonesas somente quando ele funciona) O que eu estou tentando fazer e copiar registro a registro sem a quebra de linha e sem os | e preenchendo eles de tamanho fixo usando os caracteres '#' e '0' para preencher as lacunas do arquivo. O arquivo encontra-se no dropbox(https://www.dropbox.com/s/hjhik0q3y5sxizg/empresa.txt?dl=0). PF alguém pode me ajudar?

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


    FILE *arquivo,*arquivo2;

         int d=0,e=0,f=0,g=0,h=0,w=0,j=0,k=0,l=0,m=0;
        typedef struct Empresa_copia {
        char id[5];
        char empresa[60];
        char telefone[12];
        char endereco[60];
        char numero[10];
        char complemento[25];
        char bairro[25];
        char cep[8];
        char cidade[25];
        char estado[2];
                };
            int id(char c)
        {
            int i;
            struct Empresa_copia a;
            if(c!='|')
            {
                a.id[d]=c;
                fprintf(arquivo2,"%c",a.id[d]);
                d++;
                return 1;
            }
            if(d==4)
            {
                return 2;
            }
            if((c=='|')&&(d<4)&&((strlen(a.id)!=0)||(strcmp(a.id,'0')!=0)))
            {
                d+1;
                for(i=d;i<4;i++)
                {
                    a.id[i]='0';
                    fprintf(arquivo2,"%c",a.id[i]);
                }
                for(i=0;i<4;i++)
                {
                    a.id[i]=0;
                }
                d=4;
                return 2;
            }



        }
            int empresa(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.empresa[e]=c;
                fprintf(arquivo2,"%c",a.empresa[e]);
                e++;
                    return 2;
            }

                if(e==60)
            {
                return 3;
            }
            if((c=='|')&&(e<60)&&((strlen(a.empresa)!=0)||(strcmp(a.empresa,"0")!=0)))
            {
                e+1;
                for(i=e;i<60;i++)
                {
                    a.empresa[i]='#';
                    fprintf(arquivo2,"%c",a.empresa[i]);
                }
                for(i=0;i<60;i++)
                {
                    a.empresa[i]=0;
                }

                return 3;
            }

        }
            int telefone(char c)
        {
            int i;
          struct Empresa_copia a;
            if(c!='|')
            {
                a.telefone[f]=c;
                fputc(a.telefone[f],arquivo2);
                f++;
                    return 3;
            }

            if(f==12)
            {
               return 4;
            }

            if((c=='|')&&(f<12)&&((strlen(a.telefone)!=0)||(strcmp(a.telefone,"0")!=0)))
            {
                f+1;
                for(i=f;i<12;i++)
                {
                    a.telefone[i]='#';
                    fputc(a.telefone[i],arquivo2);
                }
                for(i=0;i<12;i++)
                {
                    a.telefone[i]=0;
                }
                return 4;
            }
        }
            int endereco(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.endereco[g]=c;
                fprintf(arquivo2,"%c",a.endereco[g]);
                g++;
                    return 4;
            }
            if(g==60)
            {
                return 5;
            }
            if((c=='|')&&(g<60)&&((strlen(a.endereco)!=0)||(strcmp(a.endereco,"0")!=0)))
            {
                g+1;
                for(i=g;i<60;i++)
                {
                    a.endereco[i]='#';
                    fprintf(arquivo2,"%c",a.endereco[i]);
                }
                for(i=0;i<60;i++)
                {
                    a.endereco[i]=0;
                }
                return 5;
            }
        }
            int numero(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.numero[h]=c;
                fputc(a.numero[h],arquivo2);
                h++;
                return 5;
            }
            if(h==10)
            {
                return 6;
            }
            if((c=='|')&&(h<10)&&((strlen(a.numero)!=0)||(strcmp(a.numero,"0")!=0)))
            {
                h+1;
                for(i=h;i<10;i++)
                {
                    a.numero[i]='#';
                    fputc(a.numero[i],arquivo2);
                }
                for(i=0;i<10;i++)
                {
                    a.numero[i]=0;
                }
                return 6;
            }
        }
            int complemento(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.complemento[w]=c;
                fprintf(arquivo2,"%c",a.complemento[w]);
                w++;
                return 6;
            }
            if(w==25)
            {
                return 7;
            }
            if((c=='|')&&(w<25)&&((strlen(a.complemento)!=0)||(strcmp(a.complemento,"0")!=0)))
            {
                w+1;
                for(i=w;i<25;i++)
                {
                    a.complemento[i]='#';
                    fputc(a.complemento[i],arquivo2);

                }
                w=25;
                return 7;
            }
        }
            int bairro(char c)
        {
           struct Empresa_copia a;
           int i;
            if(c!='|')
            {
                a.empresa[j];
                fprintf(arquivo2,"%c",a.bairro[j]);
                j++;
                return 7;
            }
            if(j==25)
            {
                return 8;
            }
            if((c=='|')&&(j<25)&&((strlen(a.bairro)!=0)||(strcmp(a.bairro,"0")!=0)))
            {
                j+1;
                for(i=j;i<25;i++)
                {
                    a.bairro[i]='#';
                    fprintf(arquivo2,"%c",a.bairro[i]);
                }
                return 8;
            }
        }
            int cep(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.cep[k]=c;
                fputc(a.cep[k],arquivo2);
                k++;
                return 8;
            }
            if(k==8)
            {
                return 9;
            }
            if((c=='|')&&(k<8)&&((strlen(a.cep)!=0)||(strcmp(a.cep,"0")!=0)))
            {
                k+1;
                for(i=k;i<8;i++)
                {
                    a.cep[i]='#';
                    fputc(a.cep[i],arquivo2);
                }
                return 9;
            }
        }
            int cidade(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.cidade[l]=c;
                fprintf(arquivo2,"%c",a.cidade[l]);
                l++;
                return 9;
                }

            if(l==25)
            {
                return 10;
            }
            if((c=='|')&&(l<25)&&((strlen(a.cidade)!=0)||(strcmp(a.cidade,"0")!=0)))
            {
                l+1;
                for(i=l;i<25;i++)
                {
                    a.cidade[i]='#';
                    fprintf(arquivo2,"%c",a.cidade[i]);
                }
                for(i=0;i<24;i++)
                {
                    a.cidade[i]=0;
                }
                return 10;
            }
        }
            int estado(char c)
        {
            int i;
           struct Empresa_copia a;
            if(c!='|')
            {
                a.estado[m]=c;
                fprintf(arquivo2,"%c",a.estado[m]);
                m++;
                    return 10;
                }

            if(m==2)
            {
                        d=0;
                        e=0;
                        f=0;
                        g=0;
                        h=0;
                        w=0;
                        j=0;
                        k=0;
                        l=0;
                        m=0;
                return 1;
            }
            if((c=='|')&&(m<2)&&((strlen(a.estado)!=0)||(strcmp(a.estado,"0")!=0)))
            {
                m+1;
                for(i=m;i<2;i++)
                {
                    a.estado[i]='#';
                    fprintf(arquivo2,"%c",a.estado[i]);
                }
                for(i=0;i<2;i++)
                {
                    a.estado[i]=0;
                }
                        d=0;
                        e=0;
                        f=0;
                        g=0;
                        h=0;
                        w=0;
                        j=0;
                        k=0;
                        l=0;
                        m=0;
                return 1;
            }
        }

        void criar()
        {
            int op=1;
            char c;
                   arquivo=fopen("empresa.txt","r");
                   arquivo2=fopen("empresa_fix.txt","w");

                   while((c=fgetc(arquivo))!=EOF)
                   {
                       if((c!='\n')&&(c!='\''))
                       {
                        switch(op)
                       {
                       case 1:
                        op=id(c);
                        break;
                       case 2:
                        op=empresa(c);
                        break;
                       case 3:
                        op=telefone(c);
                        break;
                       case 4:
                        op=endereco(c);
                        break;
                       case 5:
                        op=numero(c);
                        break;
                       case 6:
                        op=complemento(c);
                        break;
                       case 7:
                        op=bairro(c);
                        break;
                       case 8:
                        op=cep(c);
                        break;
                       case 9:
                        op=cidade(c);
                        break;
                       case 10:
                        op=estado(c);
                        break;
                       }
                   }

        }
        }
int main()
{
    char c;
    int i=0;
    criar();
    while((c=fgets(c,))!=EOF)
    {
        i++;
        printf("%c",c);
    }
    printf("%d",i);
    fclose(arquivo2);
    fclose(arquivo);
    return 0;
}

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...