String içerisine sıra ile veri yerleştirme.

Başlatan Mucit23, 19 Aralık 2016, 17:05:04

Mucit23

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);

kantirici

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.

Mucit23

evet sorun long olarak göstermemden kaynaklanıyormuş. Şimdi düzeldi gibi.