char diziden integer değişkene değer alma

Başlatan Gökhan BEKEN, 14 Mayıs 2013, 10:32:14

Gökhan BEKEN

unsigned char  degisken[]  = {1, 2, 3, 1, 5, 6} ;

şeklinde bir değişkenim var.
birde
int k=0; 
int m=0;

şeklinde birer değişkenim var.
k değişkenine  dizideki ilk 3 rakamı sayı şeklinde yazmak istiyorum yani bu durumda k=123 oluyor
m değişkenine ise dizideki 4, 5 ve 6. rakamı sayı şeklinde yazmak istiyorum bu durumda k=156 oluyor

eğer çok zorda kalsam tek tek kontrol ederim yine yaparım, aşağıdaki gibi
if(degisken[0]=="1") k+=100;
if(degisken[0]=="2") k+=200;

gibi...
ancak otomatik yapmanın bir yolu vardır elbet. Bende o yolu öğrenmek istiyorum.
Bu arada ilk değişkeni integer formatında yap diyebilirsiniz ama yapamam böyle kullanmam gerekiyor.
Özel mesaj okumuyorum, lütfen göndermeyin.

AsHeS

#1
Alıntı yapılan: meftun - 14 Mayıs 2013, 10:32:14
unsigned char  degisken[]  = {1, 2, 3, 1, 5, 6} ;

şeklinde bir değişkenim var.
birde
int k=0; 
int m=0;

şeklinde birer değişkenim var.
k değişkenine  dizideki ilk 3 rakamı sayı şeklinde yazmak istiyorum yani bu durumda k=123 oluyor
m değişkenine ise dizideki 4, 5 ve 6. rakamı sayı şeklinde yazmak istiyorum bu durumda k=156 oluyor

eğer çok zorda kalsam tek tek kontrol ederim yine yaparım, aşağıdaki gibi
if(degisken[0]=="1") k+=100;
if(degisken[0]=="2") k+=200;

gibi...
ancak otomatik yapmanın bir yolu vardır elbet. Bende o yolu öğrenmek istiyorum.
Bu arada ilk değişkeni integer formatında yap diyebilirsiniz ama yapamam böyle kullanmam gerekiyor.
for (index=0;index<sayi;index++){
if (index<4)
k+=degisken[index]*pow(10,index);
}
else {
  m+=degisken[index]*pow(10,index-4)
}
}

sayi burada dizinin boyutu oluyor.
Edit:#include <math.h>  eklemeniz gerekiyor.

Gökhan BEKEN

#2
Hocam teşekkür ederim, denedim ama değişkenleri okuduğumda saçma karakterler gösteriyor.
şöyle döngüsüz deneyim dedim,

yani degisken dizisinin 10. karakterini tek hane sayı olarak deneyim sonuç ne çıkacak diye düşündüm
degisken[10]="0";
k=degisken[10]*pow(10,10);

dediğimde hiç bişey çıkmıyor yani boş değer dönderiyor

degisken[10]="1";
k=degisken[10]*pow(10,10);

dediğimde "Ú" değerini dönderiyor

degisken[10]="2";
k=degisken[10]*pow(10,10);

dediğimde "ÈŠ0...à!Á$8LN" değerini dönderiyor

*pow sayıların kuvvetini almak için kullanılıyor galiba.
MikroC help dosyasında böyle yazıyor:

Prototype double pow(double x, double y);

Description Function returns the value of x raised to the power y (i.e. xy).

Example doub = pow(10.,5.);  // doub = 9.999984e+4






mesaj birleştirme:: 14 Mayıs 2013, 12:12:55

Mikroc de şöyle bişey buldum deniyorum şimdi.

atoi
Prototype int atoi(char *s);

Description Function converts the input string s into an integer value and returns the value. The input string s should consist exclusively of decimal digits, with an optional whitespace and a sign at the beginning. The string will be processed one character at a time, until the function reaches a character which it doesn't recognize (including a null character).

Example result = atoi("32000");  // result = 32000

Özel mesaj okumuyorum, lütfen göndermeyin.

AsHeS

#3
-

CLR

unsigned char  degisken[]  = {1, 2, 3, 1, 5, 6} ; 

int k=0; 
int m=0;

k=123 için
k= ((degisken[0]+48)<<(8*2)) | ((degisken[1]+48)<<(8*1)) | (degisken[2]+48); 

m = 456 için
m= ((degisken[3]+48)<<(8*2)) | ((degisken[4]+48)<<(8*1)) | (degisken[5]+48);


Struct ile çok daha görsel olur ve bu şekilde hep sıralı ise pointer'de kullanabilirsin.
Knowledge and Experience are Power

Gökhan BEKEN

İlginiz için teşekkürler demin
                                         k1=http_request[10]- '0';
                                         k2=http_request[11]- '0';
                                         k3=http_request[12]- '0';
                                         k1=k1*100;
                                         k2=k2*10;
                                         
                                         k=k1+k2+k3;


yazıp çalıştırmıştım biraz hamallık yaptırdım pice, şimdi sizin verdiğinizi kullanayım daha iyi duruyor.
Özel mesaj okumuyorum, lütfen göndermeyin.