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.
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];
}
Hocam aynen bunu denedim ama bi sonuç vermedi. Şöyle modifiye ettim, çalıştı :)
while(katar[sayac] != ':'){
yeniKatar[sayac]=katar[sayac];
sayac++;
}
Çok sağolun.
hocam sanirim bu mantik ile gps modullerden yada wifi modullerden gelen verileri parcalaybiliriz degilmi? onlarda sanirim veriler virgul ile ayriliyordu.
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.
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 :)