C Fonksiyondan Array Dönememe
-
İçinde 128 tane 0 olan bir array oluşturmak istiyorum bir fonksiyon yazdım ama array'i return etmiyor.
char createEmpty() { char result[129]; int i; for(i=0; i<128; i++) { result[i]='0'; } result[128] = '\0'; return result; } -
void createEmpty(char dizi[])
{
int i;
for(i=0; i<128; i++)
{
dizi[i]='0';
}
dizi[128] = '\0';
}
int main(){char dizim[129];createEmpty(dizim);} -
hocam array dediğin ne ? :S
-
Hiç böyle düşünmemiştim :D sağol
Fakat yine de bu kadar sınırlı mıyız array dahi dönemiyor muyuz C'de. Python kullandık geçen dönem o çok şahaneydi. -
onu ancak pointerlarla yaparsın galiba
-
seretide bunu yazdı:
-----------------------------onu ancak pointerlarla yaparsın galiba
-----------------------------ben de öyle tahmin ediyorum yetkili bi abi yok mu :D
-
1) O yazdığın fonksiyon tasarımı kusurlu bir kere, nesne fonksiyon içinde üretilip döndürülmez, yapı ya da dizi'leri manipüle eden fonksiyonlara nesnenin adresi parametre olarak geçilir.
2) char result[128] = {0} diyerek ya da memset ile o dediğin işlem kolayca yapılır.
3) ille de döndürmek istiyorsan nesneyi static olarak bildirirsin. static char result[128];
Sorun neden kaynaklanıyor dersen, yerel olarak üretilen nesne, o blok sonlandığında yokolur. Fonksiyon ya da başka bir blok farketmez. If içinde tanımlarsan if dışında erişemezsin, fonksiyon içinde tanımlarsan fonksiyon sonlandığında erişemezsin vs.
-
en basitinden şunu yazman yeterli.
#include <stdio.h>
int main(){
int k;
int a[128]={0};
for(k=0; k<128; k++)
printf("%3d . indisin baslangic degeri = %d\n",k ,a[k]);
getchar();
return 0;
}
@Tugberk pardon hocam ben yazarken benden önce cevaplamışsınız görmedim.
-
Tugberk bunu yazdı:
-----------------------------1) O yazdığın fonksiyon tasarımı kusurlu bir kere, nesne fonksiyon içinde üretilip döndürülmez, yapı ya da dizi'leri manipüle eden fonksiyonlara nesnenin adresi parametre olarak geçilir.
2) char result[128] = {0} diyerek ya da memset ile o dediğin işlem kolayca yapılır.
3) ille de döndürmek istiyorsan nesneyi static olarak bildirirsin. static char result[128];
Sorun neden kaynaklanıyor dersen, yerel olarak üretilen nesne, o blok sonlandığında yokolur. Fonksiyon ya da başka bir blok farketmez. If içinde tanımlarsan if dışında erişemezsin, fonksiyon içinde tanımlarsan fonksiyon sonlandığında erişemezsin vs.
-----------------------------char result[128] = {'0'};
tek bir tane 0 koyuyor içine. yalnız %s ile bastırıyorm çünkü öyle yapmam gerekli.
-
uLtRaLoVeR bunu yazdı:
-----------------------------Tugberk bunu yazdı:
-----------------------------1) O yazdığın fonksiyon tasarımı kusurlu bir kere, nesne fonksiyon içinde üretilip döndürülmez, yapı ya da dizi'leri manipüle eden fonksiyonlara nesnenin adresi parametre olarak geçilir.
2) char result[128] = {0} diyerek ya da memset ile o dediğin işlem kolayca yapılır.
3) ille de döndürmek istiyorsan nesneyi static olarak bildirirsin. static char result[128];
Sorun neden kaynaklanıyor dersen, yerel olarak üretilen nesne, o blok sonlandığında yokolur. Fonksiyon ya da başka bir blok farketmez. If içinde tanımlarsan if dışında erişemezsin, fonksiyon içinde tanımlarsan fonksiyon sonlandığında erişemezsin vs.
-----------------------------char result[128] = {'0'};
tek bir tane 0 koyuyor içine. yalnız %s ile bastırıyorm çünkü öyle yapmam gerekli.
-----------------------------ne ben ne de nitem öyle bir kod yazmadı ordaki tırnaklar senin eklemen.
-
evet çünkü bana öyle lazım yani string olması lazım
