O que eu ando a tentar fazer é dividir uma String em bocados de 2048 char para posteriormente enviar envia socket. O que eu não percebo é porque é que isto me está a dar Segmentation fault no fim da execução e depois de a divisão ser feita correctamente.
Deixo aqui o codigo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void split();
int main(void) {
char* texto = "Teste bonito, e isto é sem duvida um texto feito pelo grande e unico Hemarroida, sim aquela bela pessoa que é capaz de salvar o mundo das garras de Arganok, apesar de ninguem saber quem é, nem mesmo eu, mas isso não interessa para nada... como isto tá a demorar tempo demais vamos fazer spam: IRFGIOD RJFIO DRHFGDR HUIOFGHDR UGHDIRFGIO DRJFIODRHFGDR HUIOFGHDRUGHDIRFG IODRJFIODRHFGDR HUIOFGHDRUGHDIR FGIODRJFIODRHF GDRHUIOFGHDRUGHDI RFGIODRJFIODRHF GDRHUIOFGHDRUGH DIRFGIODRJFIODRHFG DRHUIOFGHDRUGHDIR FGIODRJFIODRHFGD RHUIOFGHDRUGHDIR FGIODRJFIODRHFGD RHUIOFGHDRUGHDIR FGIODRJFIODRHFGDRHU IOFGHDRUGHDIRFGI ODRJFIODRHFGDRHUI OFGHDRUGHDIRFGIOD RJFIODRHFGDRHUIOFG HDRUGHDIRFGIODRJF IODRHFGDRHUIOFGHDRU GHDIRFGIODRJFIODRHF GDRHUIOFGHDRUGHDIRFG IODRJFIODRHFGDRHUIOFG HDRUGHDIRFGIODRJF IODRHFGDRHUIOFGHDRU GHDIRFGIODRJFIOD RHFGDRHUIOFGHDRUGH DIRFGIODRJFIODRHFGD RHUIOFGHDRUGHDIRFGIO DRJFIODRHFGDRHUIOFGH DRUGHDIRFGIODRJFIODRH FGDRHUIOFGHDRUGHDIR FGIODRJFIODRHFGDRHUIOF GHDRUGHDIRFGIODRJFIODRHF GDRHUIOFGHDRUGHDIRFGI ODRJFIODRHFGDRHUIOFGHD RUGHDIRFGIODRJFIODRHFG DRHUIOFGHDRUGHDIRFGIODRJ FIODRHFGDRHUIOFGHDRUG HDIRFGIODRJFIODRHFGDRH UIOFGHDRUGHDIRFGIO DRJFIODRHFGDRHUIOFG HDRUGHDIRFGIODRJFIO DRHFGDRHUIOFGHDRUGHDIR FGIODRJFIODRHFGD RHUIOFGHDRUGH DIRFGIODRJFIODRHF GDRHUIOFGHDRUG HDIRFGIODRJFIODRHFGDR HUIOFGHDRUGHDIRFG IODRJFIODRHFGDRHUIO FGHDRUGHDIRFGIODRJFIOD RHFGDRHUIOFGHDRUGHD IRFGIODRJFIODRHFGDRHU IOFGHDRUGHDIRFGIODR JFIODRHFGDRHUIOFGHDR UGHDIRFGIODRJFIODRHFGDR HUIOFGHDRUGHDIRFGIODRJFI ODRHFGDRHUIOFG HDRUGHDIRFGIODRJF IODRHFGDRHUIOF GHDRUGHDIRFGI ODRJFIODRHFGDRH UIOFGHDRUGHDIR FGIODRJFIODR HFGDRHUIOFGHD RUGHDIRFGIO DRJFIODRHFGD RHUIOFGHDRUGH DIRFGIODRJFIODRHFGDRH UIOFGHDRUGHDIRF GIODRJFIODRHFG DRHUIOFGHDRUGH DIRFGIODRJFIOD RHFGDRHU IOFGHDRUGHDIRFGIOD RJFIODRHFGDRHUIOF GHDRUGHDIRFG IODRJFIODRHFGDR HUIOFGHDRUGH DIRFGIODRJFIOD RHFGDRHUIOFG HDRUGHDIRFGIOD RJFIODRHFGDRHUIOF GHDRUGHDIRFGIO DRJFIODRHFGDRH UIOFGHDRUGHDIR FGIODRJFIODRH FGDRHUIOFGHDRUG HDIRFGIODRJFIODRH FGDRHUIOFGHDRUG HDIRFGIODRJFIOD RHFGDRHUIOFGH DRUGHDIRFGIOD RJFIODRHFGDR HUIOFGHDRUGHDIR FGIODRJFIODRH FGDRHUIOFGHDR UGHDIRFGIODRJFI ODRHFGDRHUIOFGHDRU GHDIRFGIODRJFI ODRHFGDRHU IOFGHD. Fim do SPAM! Olé";
split(texto);
return 0;
}
void split(char * coiso) {
char seg[2048];
char texto[strlen(coiso)];
int tamanho, numseg, seq;
strcpy(texto,coiso);
tamanho = strlen(texto);
printf("Tamanho: %d\n", tamanho);
numseg = 0;
while (tamanho > 0) {
tamanho = tamanho - 2048;
numseg++;
}
printf("Numero Seg: %d\n", numseg);
seq = 0;
while (numseg > seq) {
strncpy(seg, &texto[seq*2048], ((seq+1)*2048));
seg[2048] = '\0';
printf("Numero Segmento: %d, Numero Total: %d\n\n", seq, numseg);
printf("Enviar Segmento: %s\n\n", seg);
//send(seg);
seq++;
}
}
Se alguem me pudesse ajudar ficava mesmo muito agradecido.



