Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: Mucit23 - 19 Aralık 2016, 17:05:04

Başlık: String içerisine sıra ile veri yerleştirme.
Gönderen: Mucit23 - 19 Aralık 2016, 17:05:04
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);
Başlık: Ynt: String içerisine sıra ile veri yerleştirme.
Gönderen: kantirici - 19 Aralık 2016, 17:11:36
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.
Başlık: Ynt: String içerisine sıra ile veri yerleştirme.
Gönderen: Mucit23 - 19 Aralık 2016, 17:43:57
evet sorun long olarak göstermemden kaynaklanıyormuş. Şimdi düzeldi gibi.