Exercicio que envolve alocação de memoria, ponteiros, etc... Gostaria de sugestões para melhorar o c

1. Exercicio que envolve alocação de memoria, ponteiros, etc... Gostaria de sugestões para melhorar o c

Daniel
danielcrvg

(usa Slackware)

Enviado em 22/01/2015 - 11:09h

Ola pessoal bom dia.

O exercicio é dividir um bloco grande de caracters de 8 em 8 caracteres, e ir enviando os 8 de cada vez (vou utilizar uma função para receber e tratar os 8 caracteres de cada vez).

Ex: umtextogrande

Envio; umtextog
Envio: rande000 <- Como nao tem 8 eu completo com '0' até dar 8..

Por em quanto estou na parte de preparação do texto.. Pensei em invez de preparar cada bloco com 8 chars como citei acima, eu pensei em ja ver o tamanho do bloco inteiro, e caso ele nao for multiplo de 8, ir completando com '0' até chegar a um numero em que posso fazer a operação de mod 8 e que de 0.. isso me garante que posso fazer um 'split' no texto a cada 8 chars tranquilamente e ir enviando de 8 em 8 para função numa boa..

Gostaria que alguem pudesse da uma olhada no codigo (abaixo) e ve se é por ai mesmo o raciocinio ou alguma sugestão melhor..

Meu codigo ta assim:

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

int main() {

char *teste = "uhauehaohfe]rREGHaepgheroqgh34oqh9rqofhreoq";
int i = 0;
int j = 0;
char c = '0';

/* Aqui eu checo o tamanho total do texto*/
int len = strlen(teste);

/* Aqui eu verifico se o tamanho é multiplo de 8, e caso nao incremento o tamanho ate mod 8 ser igual a 0*/
while(len % 8 != 0) {
len+=1;
}

/* Nesta parte eu primeiro estou alocando a memoria o suficiente para a variavel 'teste2',
que vai receber o conteudo de 'teste' + os caracteres '0' para completar o bloco */
char *teste2 = malloc(strlen(teste)+(len-strlen(teste))+1);

/* Copio a string*/
strcpy(teste2,teste);

/* Concateno os '0' até chegar no tamanho correto (tamanho mod 8 == 0)*/
while(strlen(teste2) %8 != 0) {
strncat(teste2, &c,1);
}

/* Imprimindo apenas para testar se ficou certo as strings */
printf("%s %zu\n",teste,strlen(teste));
printf("%s %zu\n\n",teste2,strlen(teste2));

/* Alocando memoria para uma string auxiliar que vou usar para fazer o split de 8 em 8 chars */
char * outputStr = malloc(strlen(teste2)+1);

/* Aqui eu calculo quantos blocos de 8 chars tem no texto */
i=strlen(teste2)/8;

/* Aqui eu estou testando enviar cada bloco de 8 em 8 usando o printf */
for (j=0;j<i;j++) {
strncpy(outputStr, teste2+(8*j), 8);
printf("Enviando: %s\n",outputStr);
}

return 0;
}





.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts