Selamlar
64 elemanlı bir dizim var. Bu dizinin her bir elemanı en fazla 3 haneli integer değerlerden oluşuyor.
Ben bu verileri sırayla ve aralarına '|' karakteri koyarak bir string içerisine yerleştirmek istiyorum. sprintf fonksiyonu ile yapmaya çalıştım ama sonuç alamadım
yazdığım kod aşağıdaki gibi. Şimdilik eleman sayısını 20 ile sınırladım.
char text[150]="";
int i=0;
for(i=0;i<20;i++)
{
Serial.println(data[i]);
sprintf(&text[i*4],"|%03ld",data[i]);
}
istediğim veri türü aşağıdaki gibi
|012|235|542|876|346|......bu şekilde toplam 64 değer......|235#
Aşağıdaki gibi bir kullanımda derleyici hata vermemesine rağmen düzgün çalışmıyor string içerisinde dizi elemanlarımdan farklı değerler görüyorum. Sürekli aynı değerler.
Örnek çıktı
|812|947|947|947|947|947|947|947|947|947|947|947|947|947|947|947|947|947|947|947651272
Bu işlemi yapmak için string fonksiyonlarından hangisini kullanmak mantıklı olur?
Örneğin bahse konu olan stringin 10. elemanından itibaren elemanları dizmek isityoruz. Aşağıdaki gibi bir kullanım doğru olurmu?
sprintf(&text[i*4+10],"|%03ld",data);
Değişken int tanımla fakat long yazmaya çalışmışsın. "%ld" yi "%d" ile değiştir. Diğer sorun ise sprintf son karakterden sonra diziye string sonu karakteri yani 0, '\0' ekler. Dolayısıyla &text[i*4 -1] olarak düzenlemek gerekli.
evet sorun long olarak göstermemden kaynaklanıyormuş. Şimdi düzeldi gibi.