C double pointer array işlemi hk.

Başlatan MCansız, 02 Mart 2022, 17:53:18

MCansız

Merhabalar

Stm32 ile projemde eeproma string olarak yazı eklemem  gerekli ve hali hazırda kullanmış olduğum yapım var.

   char *_TXT_R_1[]={"ali"};
	   char *_TXT_R_2[]={"veli"};
	   char *_TXT_R_3[]={"selami"};
	   char *_TXT_R_4[]={"1234"};
	   
	   char **_TXT_R_ARRAY[4] =
	    {
	    		_TXT_R_1,
			_TXT_R_2,
			_TXT_R_3,
			_TXT_R_4
	   };
	   printf("%s" ,_TXT_R_ARRAY[0][0] ); // ali
           printf("%s" ,_TXT_R_ARRAY[1][0] ); // veli
	   printf("%s" ,_TXT_R_ARRAY[2][0] ); // selami
           printf("%s" ,_TXT_R_ARRAY[3][0] ); // 1234

yukarıdaki kodda bir katar yapım var. Yapmak istediğim _TXT_R_ARRAY değişkeni üzerinden epromdan okuduğum yeni isimleri değiştirmek


(*_TXT_R_ARRAY)[0]= "yeni";

şu şeklide _TXT_R_1 içeriği değişiyor ama

(*_TXT_R_ARRAY)[1]= "yeni";

şeklinde _TXT_R_2 içeriğini değiştiremiyorum bunun için calloc kullandım ama başaramadım. Nasıl bir yol izlemeliyim.

Teşekkür ederim.


mehmet

strcpy, strcat fonksiyonlarını deneyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

ahmet35

#2
char *_TXT_R_1[]={"ali"} değişkeni STM32' nin flash yani ROM bölgesinde olduğu için içeriğini değiştiremezsiniz.

@mehmet hocamın dediği gibi strcpy fonksiyonu kullanın.

char _TXT_R_1[16]; gibi RAM' de bulunan bir dizi değişkeni oluşturup strcpy fonksiyonu ile "ali" string değerini bu dizi değişkenine kopyalayın.
Daha sonra istediğiniz gibi üzerinde işlem yapabilirsiniz.

String dizilerinin son karakterini '\0' karakteri yaptığınızdan emin olun.
ali\0 -> ahmet\0

kimlenbu

karakter uzunluklarınız farklı, ya uzunluklar eşit olsun ya da söyledikleri gibi son karakteri kendiniz 0x00 olarak değiştirin.

hasankara

Yazıların sadece yerleri değiştirilmek isteniyorsa string kütüphanesi kullanılmak zorunda değil ilk yaptığınız gibi, stringleri rom a gömüp sadece işaretçilerinin(pointer) yerleri değiştirilebilir. ilkokul fiş defterleri gibi yazılar kağıtlarda sabit ve kağıtların yerlerini değiştirip anlamlandırmak gibi.