Ir para conteúdo
Fórum Script Brasil

Marcia Rosa

Membros
  • Total de itens

    18
  • Registro em

  • Última visita

Tudo que Marcia Rosa postou

  1. Marcia Rosa

    Função Split

    Então Beraldo, os códigos que tentei, sem sucesso em ambos, foram esses: void ParametrosRetorno(char *parametros, char *loja_cnpj, char *loja_nome, char *loja_endereco, char *saldo_valor, char *data, int tam) { int i; //setar o cnpj da loja parametros++; for (i = 0; i < tam; i++) { if (*parametros == '|') break; else { *loja_cnpj = *parametros; parametros++; loja_cnpj++; } } //setar o nome da loja parametros++; for (i = i; i < tam; i++) { if (*parametros == '|') break; else { *loja_nome = *parametros; parametros++; loja_nome++; } } //setar o endere�o da loja parametros++; for (i = i; i < tam; i++) { if (*parametros == '|') break; else { *loja_endereco = *parametros; parametros++; loja_endereco++; } } //setar o valor/saldo retornado parametros++; for (i = i; i < tam; i++) { if (*parametros == '|') break; else { *saldo_valor = *parametros; parametros++; saldo_valor++; } } //setar a data parametros++; for (i = i; i < tam; i++) { if (*parametros == 'F') break; else { *data = *parametros; parametros++; data++; } } } void ParametrosRetorno2(char *parametros, char *loja_cnpj, char *loja_nome, char *loja_endereco, char *saldo_valor, char *data) { int i = 0; int flag = 0; int pos = 0; while (parametros[i] != '') { if (flag == 0) { if (parametros[i] == '|') { flag++; pos = 0; } else { loja_cnpj[pos] = parametros[i]; pos++; } } if (flag == 1) { if (parametros[i] == '|') { flag++; pos = 0; } else { loja_nome[pos] = parametros[i]; pos++; } } if (flag == 2) { if (parametros[i] == '|') { flag++; pos = 0; } else { loja_endereco[pos] = parametros[i]; pos++; } } if (flag == 3) { if (parametros[i] == '|') { flag++; pos = 0; } else { saldo_valor[pos] = parametros[i]; pos++; } } if (flag == 4) { if (parametros[i] == '|') { flag++; pos = 0; } else { data[pos] = parametros[i]; pos++; } } i++; } }
  2. Marcia Rosa

    Função Split

    o que quer dizer com isso? dá erro? se sim, poste a mensagem e que compilador é? Beraldo, É um compilador para aplicação embarcada. Tem várias funções que não podem ser usadas em o strtok é uma delas.
  3. Marcia Rosa

    Função Split

    Pessoal, alguém teria uma função que faça um split numa string? Já tentei de tudo e não consigo e os exemplos que achei na internet não funcionaram aqui. Tenho uma variável: "Marcia|Silva|Rosa" Preciso de: "Marcia" "Silva" "Rosa" OBS: não posso usar strtok porque meu compilador não aceita. Obrigada,
  4. David, Agora sim funcionou. Aos poucos estou me acostumando com o C. Achava que seria fácil pra mim que mexia com C# mas estou vendo que muita coisa é BEM diferente. Muito obrigada pela ajuda. Marcia.
  5. Olá David, Aqui eu já havia testado da vez passada e gera o seguinte erro: "Src\Funcoes.c:92: error: parse error before '&' token". Se tiro o & do parametro charDestino, compila. Só que daí não faz nada. Eu uso compilador de um sistema embarcado (não posso informar qual). Tenho que ficar limitada ao que esse compilador interpreta, que no caso não é tudo que normalmente se pode usar no C. De qualquer forma valeu pela força e vou continuar tentando. Abç. Marcia
  6. Olá David, Testei aqui e não funcionou. Mas agradeço a tentativa.
  7. Senhores, Venho recorrer a ajuda de vocês novamente pois estou a dois dias quebrando a cabeça e ainda não consegui resolver meu problema. No C# quando eu preciso alocar valores a esquerda eu uso PadLeft. Exemplo: string var1 = "55"; var1 = var1.PadLeft(5, '0'); //valor de var1 será "00055" [/codebox] Alguém sabe me dizer se o C possui algo assim? Ou já viu algo que dê pra fazer isso? Meu código que estou tetando fazer: [codebox] void PadLeft(char *charPrencher, char *charDestino, char *charOrigem, int total) { int i; int j; //preencher antes do valor enviado for(i=0;i < (total - (int)strlen(charOrigem)); i++) { *charDestino = charPrencher; charDestino++; } //depois juntar com os dados enviados for(j=0; j < strlen(charOrigem); j++) { charDestino++; *charDestino = *charOrigem; charOrigem++; } } //onde: //charPrencher = char que será acrescido antes (zero no exemplo) //charDestino = o novo valor 00055 depois de processado //charOrigem = 55 //total = tamanho total de caracteres que irá ter para montar a quantidade de caracteres a esquerda (no exemplo 5) Qualquer dica é bem vinda. Obrigada.
  8. Durub, Primeiro peço desculpas pela demora em responder mas estava em viagem. E obrigada pela explicação. Testei aqui e já me ajudou. ao menos posso correr atrás do resto agora. Obrigada pela peciência de explicar, pois como disse estou começando no C e tenho vícios de outras linguagens, e alguns colegas de fórum acham que estamos pedindo para resolver o problema mas na verdade uma simples explicação já ajudaria para esse e vários outros problemas que possamos vir a encontrar. Abç Marcia.
  9. Ronaldo, Não posso mudar o uint8 pois faz parte do sistema já em uso onde existem outras bibliotecas usando esse modelo. O 512+1 também não entendi porque foi feito assim. Como estava assim, não mexi. Quanto a sua dica de usar o strcpy para a variável var1, como eu disse assim sempre funcionou! Só que os valores devem ser dinâmicos e não estáticos como está ali. Mesmo assim, agradeço. Marcia.
  10. Ronaldo, está compilando perfeitamente. Só que não tenho debugar porque testo num terminal com características específicas que não tenho como simular no meu PC. Daí ao rodar lá, ou não pega o valor ou dá erro e a app reinicia sem exibir a mensagem de erro. Obrigada.
  11. Olá, Novamente recorro a ajuda de vocês porque tem coisas que ainda estou aprendendo e descobrindo os segredos. Baixei um código da internet onde tem a seguinte variável: static uint8 var1[512+1]; strcpy(var1, "123456"); [/CODEBOX] Nesse caso acima está estático. E preciso do valor dinâmico. Daí tentei assim (e não funcionou): [CODEBOX] static uint8 var1[512+1]; char str_tmp = "123456"; strcpy(var1, str_tmp); Tentei assim (e não funcionou): static uint8 var1[512+1]; char *str_tmp = "123456"; strcpy(var1, str_tmp); [/CODEBOX] Tentei assim (e não funcionou): [CODEBOX] static uint8 var1[512+1]; char str_tmp = "123456"; strcpy(var1, (char)str_tmp); Tentei assim (e não funcionou): static uint8 var1[512+1]; char str_tmp = "123456"; int i = 0; for(i = 0; i <= strlen(str_tmp) - 1; i++){ //tentei... var1[i] = (byte)str_tmp[i]; //tentei var1[i] = (int)str_tmp[i]; } [/CODEBOX] Qualquer dica que pode me ajudar a achar um caminho, serve. Obrigada.
  12. Perfeito. Funcionou exatamente como precisava. Só confirmar se o que alterei está certo.... Em "Metodo2( &variavel );" no arquivo1 eu mudei para "Metodo2( &pont );". Assim funcionou. Tá certo? Aproveitar e perguntar mais uma coisa....sempre que passar char no parâmetro deve ser com dois asteríscos "void Metodo2( char **variavel )"? Muito obrigada. Você não sabe o quanto me ajudou pois em nenhuma apostila e material que encontrei na internet há referências de fazer algo desse modo que você me ensinou. Márcia.
  13. webpantoja, Acho que funcionou. Não pude ter certeza porque eu tenho que retornar um char de 16. Poderia me dizer como ficaria usando char? Fiz aqui e não deu certo: Arquivo1 main() { char variavel[16]; Metodo2( &variavel ); printf("X = %s", variavel ); } Arquivo2 Metodo2( char *variavel ) { *variavel = "return ok"; }
  14. webpantoja, Com certeza melhorou meu entendimento desse tal de *ponteiro. Vou testar essa sua dica e ver se vai dar certo. Pela lógica, creio que dará certo. Antes preciso ver o por quê e fazer o meu compilador voltar a funcionar. Estava tudo bem até ontem a tarde. Assim que o refizer voltar a ativa, dou resposta no tópico. Muito obrigada. Márcia.
  15. Mnemonic, Até tentei fazer isso só que dá erro que a variável x não foi declarada. Declarei ela no arq2.c; fiz include do arq2.c no arq1.c e após invocar o método que preenche o valor de X no arq2.c dei um print para exibir o valor de X. Continuo na mesma. Obrigada pela tentativa.
  16. Poderia dar um exemplo Jonathan, pois como disse estou iniciando e algumas coisas ainda estou aprendendo. Obrigada.
  17. Não posso. É uma função void que já existe e não posso mexer nela.
  18. Olá, Estou iniciando no desenvolvimento C. Estou com o seguinte problema: -Tenho dois arquivos: arq1.c e arq2.c. -Fiz um include do arq2.c dentro do arq1.c onde chamo uma função do arq2.c. -Dentro do arq2.c tenho uma variável char nome que recebe um valor tratada dentro da função invocada. -Como faço para receber essa variável dentro do arq1.c que chamou a função? Obrigada. Márcia.
×
×
  • Criar Novo...