İki karakter arasındaki datayı almak

Başlatan ArifAhmet, 25 Ocak 2015, 23:31:39

ArifAhmet

Merhabalar,
Elimde şöyle bir data var; veri1:veri2:veri3:veri4...:verin:
Şimdi ben sadece veri1'i almak istiyorum, veri1'in uzunluğunu bilmiyorum ama veriler arasında ":" karakteri var. strtok fonksiyonuda kullanamıyorum. strchr falan denedim ama galiba beceremedim. Bunu yapmanın başka nasıl yolu varmıdır acaba?
İyi günler.
Yaşasın Open Source!

Gökhan BEKEN

denemedim ama çalışır herhalde:
char katar[]="veri1:veri2:veri3:veri4...:verin:";
char yeniKatar[20];
char sayac=0;


//ikinoktanın kaçıncı karakter olduğunu öğrenelim:
while(katar[sayac] != ':'){ 
	sayac++;
} 


//yeni dizimize sadece ilk kısmın kopyasını alalım:
while(--sayac){
	yeniKatar[sayac]=katar[sayac];
}
Özel mesaj okumuyorum, lütfen göndermeyin.

ArifAhmet

Hocam aynen bunu denedim ama bi sonuç vermedi. Şöyle modifiye ettim, çalıştı :)
while(katar[sayac] != ':'){
    yeniKatar[sayac]=katar[sayac];
    sayac++;
}
Çok sağolun.
Yaşasın Open Source!

Karamel

hocam sanirim bu mantik ile gps modullerden yada wifi modullerden gelen verileri parcalaybiliriz degilmi? onlarda sanirim veriler virgul ile ayriliyordu.

Gökhan BEKEN

GPS, gsm, bluetooth vs(say say bitmez), için elzem olan bir işlemdir.
Mantık basit,
1- kesilecek yerin kaçıncı karakterden başladığını bul
2- kaçıncı karakterde bittiğini bul.
3- bu ikisi arasındakileri yeni diziye aktar
yani 3 adet döngü var.
Özel mesaj okumuyorum, lütfen göndermeyin.

MrDarK

Meftunun söylediklerine ek arama yapılacak arrayin bilgilerini başlangıç ve bitiş adreslerini pointer ile fonksiyona yollarsanız birçok array'de bu tarz aramalar yaptırabilirsiniz.

Hatta ben genelde aradığım bilgiyi #define array olarak tanıtıp fonksiyona bulmasını istediğim bilginin başlangıç adresini ve uzunluğunu gönderiyorum.

Sonucta TRUE veya FALSE alıp eğer var ise birde bulduğu pointer adresinden peşi sıra dataları çekiyorum :)
Picproje Eğitim Gönüllüleri ~ MrDarK