Estou precisando de auxilio de voces no meu codigo C. Como voces poderão notar, estou comecando em C. Ou seja, estou verde, porem com muita persistencia acredito que chego la, hehehe. :)
Problema:
Criei uma funcao chamada ordenaString, esta funcao tem como objetivo apenas ordenar um vetor de caracteres. Não testei se a funcao esta fazendo o que deveria fazer, tambem não e o foco no momento.
Meu problema esta quando passo um string para funcao "ordenaString". Preciso que a funcao retorne a String formata, sendo que o parametro que esto passando faz parte de uma estrutura. Estou precisando auxilio para passagem deste parâmetro, pois todas as formas que tentei me retornou erro do tipo:
configura.c:480:2: aviso: nenhuma linha-nova no fim do arquivo
configura.c: In function ‘void ReadPerifericos(config05**)’:
configura.c:202: erro: cannot convert ‘char (*)[255]’ to ‘char*’ for argument ‘1’ to ‘char ordenaString(char*)’
configura.c: In function ‘char ordenaString(char**)’:
configura.c:469: erro: ISO C++ forbids comparison between pointer and integer
configura.c:475: erro: invalid conversion from ‘char*’ to ‘char’
configura.c:477: erro: cannot convert ‘char**’ to ‘char*’ for argument ‘1’ to ‘char* strcpy(char*, const char*)’
Pergunta
Guest Fagner
Ola pessoal ...
Estou precisando de auxilio de voces no meu codigo C. Como voces poderão notar, estou comecando em C. Ou seja, estou verde, porem com muita persistencia acredito que chego la, hehehe. :)
Problema:
Criei uma funcao chamada ordenaString, esta funcao tem como objetivo apenas ordenar um vetor de caracteres. Não testei se a funcao esta fazendo o que deveria fazer, tambem não e o foco no momento.
Meu problema esta quando passo um string para funcao "ordenaString". Preciso que a funcao retorne a String formata, sendo que o parametro que esto passando faz parte de uma estrutura. Estou precisando auxilio para passagem deste parâmetro, pois todas as formas que tentei me retornou erro do tipo:
configura.c:480:2: aviso: nenhuma linha-nova no fim do arquivo
configura.c: In function ‘void ReadPerifericos(config05**)’:
configura.c:202: erro: cannot convert ‘char (*)[255]’ to ‘char*’ for argument ‘1’ to ‘char ordenaString(char*)’
configura.c: In function ‘char ordenaString(char**)’:
configura.c:469: erro: ISO C++ forbids comparison between pointer and integer
configura.c:475: erro: invalid conversion from ‘char*’ to ‘char’
configura.c:477: erro: cannot convert ‘char**’ to ‘char*’ for argument ‘1’ to ‘char* strcpy(char*, const char*)’
Conto com auxilio de voces, e desde já obrigado.
//-------------------------------------------------------------------------------------------------------------
struct config05 {
char Funcao[MAX];
char SAM[MAX];
char Tipo[MAX];
char PortaSerial[MAX];
char BitsPorSegundo[MAX];
char BitsDeDados[MAX];
char Paridade[MAX];
char BitsDeParada[MAX];
char BitsDeParidade[MAX];
char Config[MAX];
char xxxIRQ[MAX];
struct config05 *prox;
};
void ReadPerifericos(struct config **inicio)
{
struct config05 *aux=NULL, *novo=NULL, *aux1=NULL;
FILE* fp;
FILE* fp1;
char c[20];
int flag;
aux=*inicio;
aux1=*inicio;
//char log=
fp1=fopen("audit.log","a+");
fp=fopen("config05.ini","r");
if(fp==NULL)
fprintf(fp1,"Erro ao abrir config05.ini");
else
fprintf(fp1,"<---Aberto config05.ini com sucesso!--->\n");
while(!feof(fp))
{
flag=0;
novo=(struct config05 *)malloc(sizeof(struct config05));
fgets (novo->Funcao, MAX, fp);
// fprintf(fp1,"Este e um arquivo chamado:\n%s\n", s);
if(strncmp (novo->Funcao,"[ECF]",4)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[ECF] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
/* PASSANDO STRING PARA FUNCAO ORDENA STRING */
ordenaString(&novo->Tipo);
fprintf(fp1,"Imprime ---->");
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s",novo->BitsPorSegundo);
fgets (novo->BitsDeDados, MAX, fp);
fprintf(fp1,"novoBitsDeDados->%s",novo->BitsDeDados);
fgets (novo->Paridade, MAX, fp);
fprintf(fp1,"novoParidade->%s",novo->Paridade);
fgets (novo->BitsDeParada, MAX, fp);
fprintf(fp1,"novoBitsDeParada->%s \n",novo->BitsDeParada);
printf ("----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[TECLADO OPERADOR]",17)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[TECLADO OPERADOR] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[LEITOR_CMC7]",12)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[LEITOR_CMC7] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s",novo->BitsPorSegundo);
fgets (novo->BitsDeDados, MAX, fp);
fprintf(fp1,"novoBitsDeDados->%s",novo->BitsDeDados);
fgets (novo->Paridade, MAX, fp);
fprintf(fp1,"novoParidade->%s",novo->Paridade);
fgets (novo->BitsDeParada, MAX, fp);
fprintf(fp1,"novoBitsDeParada->%s",novo->BitsDeParada);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[LEITOR_DOCUMENTOS]",18)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[LEITOR_DOCUMENTOS] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s", novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s", novo->BitsPorSegundo);
fgets (novo->BitsDeDados, MAX, fp);
fprintf(fp1,"novoBitsDeDados->%s", novo->BitsDeDados);
fgets (novo->Paridade, MAX, fp);
fprintf(fp1,"novoParidade->%s", novo->Paridade);
fgets (novo->BitsDeParada, MAX, fp);
fprintf(fp1,"novoBitsDeParada->%s", novo->BitsDeParada);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[sCANNER_SERIAL]",15)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[sCANNER_SERIAL] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s",novo->BitsPorSegundo);
fgets (novo->BitsDeDados, MAX, fp);
fprintf(fp1,"novoBitsDeDados->%s",novo->BitsDeDados);
fgets (novo->Paridade, MAX, fp);
fprintf(fp1,"novoParidade->%s",novo->Paridade);
fgets (novo->BitsDeParada, MAX, fp);
fprintf(fp1,"novoBitsDeParada->%s",novo->BitsDeParada);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[PINPAD]",7)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[PINPAD] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s",novo->BitsPorSegundo);
fgets (novo->SAM, MAX, fp);
fprintf(fp1,"novoSAM->%s",novo->SAM);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(novo->Funcao,"[bALANCA SERIAL]",15)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[bALANCA_SERIAL] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->PortaSerial, MAX, fp);
fprintf(fp1,"novoPortaSerial->%s",novo->PortaSerial);
fgets (novo->BitsPorSegundo, MAX, fp);
fprintf(fp1,"novoBitsPorSegundo->%s",novo->BitsPorSegundo);
fgets (novo->BitsDeDados, MAX, fp);
fprintf(fp1,"novoBitsDeDados->%s",novo->BitsDeDados);
fgets (novo->Paridade, MAX, fp);
fprintf(fp1,"novoParidade->%s",novo->Paridade);
fgets (novo->BitsDeParada, MAX, fp);
fprintf(fp1,"novoBitsDeParada->%s",novo->BitsDeParada);
fprintf(fp1,"----------------------------------------- \n");
}
else if (strncmp(c,"[GAVETA]",7)==0)
{
flag=1;
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"[GAVETA] \n");
fprintf(fp1,"----------------------------------------- \n");
fprintf(fp1,"novoFuncao->%s",novo->Funcao);
fgets (novo->Tipo, MAX, fp);
fprintf(fp1,"novoTipo->%s",novo->Tipo);
fgets (novo->Config, MAX, fp);
fprintf(fp1,"novoConfig->%s",novo->Config);
fprintf(fp1,"----------------------------------------- \n");
}
if(flag==1)
{
novo->prox=aux->prox;
aux->prox=novo;
}
}
fprintf(fp1,"<-----Finalizada leitura do arquivo!----->\n");
fclose(fp);
fclose(fp1);
}
//-------------------------------------------------------------------------------------------------------------
char ordenaString(char string[MAX])
{
char troca[MAX];
int i,j, posicao=0, cont=0;
for(i=0; i<256; i++)
troca=0;
for(i=0; string; i++)
if(string== '=')
posicao=i+1;
for(j=i ; string[j]!=0; j++)
{
cont=cont+1;
troca[cont]=string[j];
}
strcpy(string,troca);
return (string);
}
Link para o comentário
Compartilhar em outros sites
3 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.