Şimdi birkaç saat çalışmayı denedim, ancak kafamı buralara çekemiyorum.Dizelerin dönüşü dizisi
Dizeleri bir dizi döndürebilen bir işlev yazmaya çalışıyorum.
#include <stdio.h>
#include <stdlib.h>
/**
* This is just a test, error checking ommited
*/
int FillArray(char *** Data);
int main()
{
char ** Data; //will hold the array
//build array
FillArray(&Data);
//output to test if it worked
printf("%s\n", Data[0]);
printf("%s\n", Data[1]);
return EXIT_SUCCESS;
}
int FillArray(char *** Data)
{
//allocate enough for 2 indices
*Data = malloc(sizeof(char*) * 2);
//strings that will be stored
char * Hello = "hello\0";
char * Goodbye = "goodbye\0";
//fill the array
Data[0] = &Hello;
Data[1] = &Goodbye;
return EXIT_SUCCESS;
}
Ben muhtemelen aşağıdaki çıktıyı almak çünkü bir yere işaretçiler ile karışmasını:
merhaba
Segmentasyon Arıza
Dizenin sonunda '\ 0' gerekmez. Çift tırnak işaretleri kullandığınızda, derleyici sizin için '\ 0 'karakterini ekler. Eğer dizelerinizi "char Merhaba" [] = {'h', 'e', 'l', 'l', 'o', '\ 0'}; ' –
Bir baş belası olduğumu biliyorum ama lütfen kötü niyetli olanı serbest bırakın. Bu iyi bir uygulamadır ve eğer siz kod yazarken her zaman yaparsanız, daha az sıklıkta unutursunuz. – Daniel
Boş bir terminatöre ihtiyaç duymadığımı biliyordum ama bir sebepten dolayı bunu dahil ettim. Teşekkürler Dan, genelde yaparım, ama bu sadece bir testti. Teşekkürler. – Kewley