Buongiorno ragazzi.
Ho scritto il seguente programma :
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char* substring(const char* str, int begin, int len)
{
if (str == 0 || strlen(str) == 0 || strlen(str) < begin || strlen(str) < (begin+len))
return 0;
return strndup(str + begin, len);
}
int five_pos(char s[50])
{
int i,cont,ret;
i=-1;
cont = 0;
while(cont<5)
{
i++;
if(s[i]=='&') {cont++;}
}
}
void spacchetta(const char* stringa)
{
int pos5,stlun;
char ssss[50];
int i=0;
for(i=0;i<50;i++)
{
ssss[i]='z';
}
for(i=0;i<50;i++)
{
char* appo = substring(stringa,i,1);
ssss[i]=*appo;
}
for(i=0;i<50;i++)
{
printf("elem %c\n",ssss[i]);
}
pos5=0;
stlun=0;
pos5 = five_pos(ssss); //posizione quinta &
stlun = strlen(stringa); //lunghezza stringa
int begin1 = 0;
int end1 = 2;
char* comando= substring(stringa,begin1,end1);
int begin2 = 4;
int end2 = 1;
char* nodo = substring(stringa,begin2,end2);
int begin3 = 7;
int end3 = pos5-1;
printf("pos5 %i",pos5);
char* ip = substring(stringa,begin3,end3);
int begin4 = pos5+2;
int end4 = 4;
char* porta = substring(stringa,begin4,end4);
int begin5 = pos5+8;
int end5 = stlun-1;
char* altro = substring(stringa,begin5,end5);
//stampo:
printf("comando = %s\n", comando);
printf("nodo = %s\n", nodo);
printf("ip = %s\n", ip);
printf("porta = %s\n", porta);
printf("altro = %s\n", altro);
}
int main()
{
const char* ss= "/J&&P&&192.168.0.1&&5940&&PEZZALI";
spacchetta(ss);
}
quando lo compilo tutto ok.
Al momento dell esecuzione mi restituisce solo:
Errore di segmentazione (core dump creato)
senza dirmi altro.
Quindi non riesco a capire dove sia il problema.
Premetto che le funzioni five_pos e substring funzionano,sono gia state testate.
Come ulteriore info, sto lavorando su ubuntu.