Ir para conteúdo
Fórum Script Brasil
  • 0

Thiago lablonsk

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...