string'in belli bir kısmını değiştirme

Başlatan gokhangokcen, 20 Eylül 2016, 08:39:08

gokhangokcen

cümleten iyi günler dilerim,
aşağıda vermiş olduğum kod parçasında bulunan char headerText[] isimli değişkende bulunan ip adresi yazan kısmını programda manuel olarak değiştirmem gerekiyor.Değişkeni nasıl parçalarım? sonra istediğim değişkeni yaptıktan sonra nasıl geriye string olarak toplayabilirim?

#include <main.h>

#fuses NOWDT,NOLVP,NODEBUG,NOPROTECT            //,NOMCLR      RESET BUTONU DEVREDE VAR...!!

//#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,parity=N,stop=1)

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)



unsigned int16 TELNET_PORT = 4747;
int ips[12] ={192, 168, 10, 111, 192, 168, 10, 1, 255, 255, 255, 0};


TCP_SOCKET g_MyTelnetSock;
int1 g_MyHttpSending = FALSE;
char g_MyHttpResponse[64];

unsigned int8 serverIP[4] = {192, 168, 10, 109};

//char serverIP[] = "192.168.10.109";
char url[] = "/cardcontrol.asp";


//*****************************

char headerText[] = "nAccept: *.*\r\nAccept-Language: tr-tr\r\nHost: 192.168.10.109\r\nAccept-Encoding: gzip\r\nConnection: Close\r\n\r\n";

//*****************************



void MyHttpSend(void)
{  char sip[];
   sprintf(sip,"%u.%u.%u.%u",serverIP[0],serverIP[1],serverIP[2],serverIP[3]);
   HttpClientSetHostName( sip);
   HttpClientSetUrl(  url);
   HttpClientSetCustomHeaders(  headerText);
   HttpClientSetHostPort(80);
   HttpClientSetResponseBuffer(g_MyHttpResponse,sizeof(g_MyHttpResponse));


   HttpClientStart();
}


denediğim yöntem;

char headerText[] ;
char headerText1[] = "nAccept: *.*\r\nAccept-Language: tr-tr\r\nHost: ";
char ip[] = "192.168.10.109";
char headerText2[] = "\r\nAccept-Encoding: gzip\r\nConnection: Close\r\n\r\n";

sprintf(headerText1,"%s",ip);
sprintf(headerText,"%s",headerText1);


bu şekilde çalıştıramadım. Nerede hata yapıyor olabilirim? Farklı bir komut var mı? ya da sprintf'i yanlış mı kullanıyorum?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

atomx

ip[0] = 1;
ip[1] = 9;
ip[2] = 2;
.
.
.
ip
  • = y;

    sprintf() ifadeyi tamamıyla değiştirir, tabi değer başlangıç noktası belirtirmemiş ise. Tavsiyem bu işler için sprintf kullanmayın hafıza düşmanı oluyor kendisi.
Hüseyin TECER

gokhangokcen

#2
atomx hocam sıkıntı benim ip bloğunu birleştirmede değil
  HttpClientSetCustomHeadersROM((rom char*)"nAccept: *.*\r\nAccept-Language: tr-tr\r\nHost: 192.168.2.10\r\nAccept-Encoding:gzip\r\nConnection: Close\r\n\r\n");

burada yazan ip kısmını dışarıdan değiştirmek istiyorum. ve bunu eeproma yazıp kaydedip açılışta okutup işleme almak lazım.

mesaj birleştirme:: 20 Eylül 2016, 15:36:57

unsigned int8 serverIP[4] = {192, 168, 2, 10};

//char serverIP[] = "192.168.10.109";
char url[] = "/cardcontrol.asp";
char headerText[180];

char headerText1[150] = "nAccept: *.*\r\nAccept-Language: tr-tr\r\nHost: ";
char headerText2[20] = "192.168.2.10";
char headerText3[50]= "\r\nAccept-Encoding: gzip\r\nConnection: Close\r\n\r\n";

void MyHttpSend(void)
{  char sip[];
   strcat(headerText1,headerText2);
   strcat(headerText1,headerText3);
   puts(headerText1);

   sprintf(sip,"%u.%u.%u.%u",serverIP[0],serverIP[1],serverIP[2],serverIP[3]);
   HttpClientSetHostName( sip);
   HttpClientSetUrl(  url);
   HttpClientSetCustomHeaders(  headerText1);
   HttpClientSetHostPort(80);
   HttpClientSetResponseBuffer(g_MyHttpResponse,sizeof(g_MyHttpResponse));


   HttpClientStart();
}


sorunu bu şekilde hallettim arkadaşlar belki birilerinede faydası olur. STRCAT komutu varmış helpten bakınca buldum. İki stringi birbirine ekliyor. ilave ediyor buda benim işimi gördü.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.