folder Tahribat.com Forumları
linefolder C - C++
linefolder Segmentation Fault Vermesinin Sebebi Ne? (C Dili)



Segmentation Fault Vermesinin Sebebi Ne? (C Dili)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilenyok
    bilenyok's avatar
    Kayıt Tarihi: 17/Eylül/2009
    Erkek

    Yeni öğreniyorum,alttan alın..

     

    Stringin uzunlugunu basıcam ekrana ama segm. fault veriyor:

     

    #include
    int main ()
    {
    char string[10]="bilgisayar";
    printf("%d",str_len(string[10]));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    DeaD_BY bunu yazdı:
    -----------------------------

    Yeni öğreniyorum,alttan alın..

     

    Stringin uzunlugunu basıcam ekrana ama segm. fault veriyor:

     

    #include
    int main ()
    {
    char string[10]="bilgisayar";
    printf("%d",str_len(string[10]));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }


    -----------------------------

    - Hocam string[10] demişsin , bu 10 elemanlı bir char dizisi anlamına gelir. "bilgisayar" kelimesinde ise 10 harf gözükse de C de tüm stringlerin sonunda '\0' karakteri yani null terminator bulunur yani ona da bir yer ayırman gerekir. Dolayısıyla diziyi 11 elemanlı tanımla.

    - İkincisi str_len(string[10]) şeklinde kullanamazsın, beklenen parametre zaten array direk ismiyle kullanmalısın yani str_len(string) şeklinde.

    Ayrıca en üste include koymuşsun boş amacın ne anlayamadım


    The king is bleeding.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilenyok
    bilenyok's avatar
    Kayıt Tarihi: 17/Eylül/2009
    Erkek

    j4x bunu yazdı:
    -----------------------------

    DeaD_BY bunu yazdı:
    -----------------------------

    Yeni öğreniyorum,alttan alın..

     

    Stringin uzunlugunu basıcam ekrana ama segm. fault veriyor:

     

    #include
    int main ()
    {
    char string[10]="bilgisayar";
    printf("%d",str_len(string[10]));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }


    -----------------------------

    - Hocam string[10] demişsin , bu 10 elemanlı bir char dizisi anlamına gelir. "bilgisayar" kelimesinde ise 10 harf gözükse de C de tüm stringlerin sonunda '\0' karakteri yani null terminator bulunur yani ona da bir yer ayırman gerekir. Dolayısıyla diziyi 11 elemanlı tanımla.

    - İkincisi str_len(string[10]) şeklinde kullanamazsın, beklenen parametre zaten array direk ismiyle kullanmalısın yani str_len(string) şeklinde.

    Ayrıca en üste include koymuşsun boş amacın ne anlayamadım


    -----------------------------

     

    çok teşekkürler hocam..include <stdio.h> koymustum ama silmisim yanlıslıkla sanırım..teşekkür ettim.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilenyok
    bilenyok's avatar
    Kayıt Tarihi: 17/Eylül/2009
    Erkek

    hocam şimdide 0 basıyo ekrana :S

    #include <stdio.h>

    int main ()
    {
    char string[]="bilgisayar";
    printf("%d",str_len(string));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek


    #include <stdio.h>
    int main ()
    {
    char string[10]="bilgisayar\0";
    printf("%d",str_len(string));
    return 0;
    }

    int str_len(char *string)
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }

     

    derlemeden yazdım ama bak bakalım bu çalışıyor mu ?

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    DeaD_BY bunu yazdı:
    -----------------------------

    hocam şimdide 0 basıyo ekrana :S

    #include

    int main ()
    {
    char string[]="bilgisayar";
    printf("%d",str_len(string));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }


    -----------------------------

     

    Hata şu, for un altına return i yazmişsin her forda return yani. İlk forda return edince 0 çıkıyor. yapman gereken şey for(i=0;string[i]!='\0';i++) bu satırın sonuna bi ; koymak yani içi boş for.


    The king is bleeding.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilenyok
    bilenyok's avatar
    Kayıt Tarihi: 17/Eylül/2009
    Erkek

    j4x bunu yazdı:
    -----------------------------

    DeaD_BY bunu yazdı:
    -----------------------------

    hocam şimdide 0 basıyo ekrana :S

    #include

    int main ()
    {
    char string[]="bilgisayar";
    printf("%d",str_len(string));
    return 0;
    }

    int str_len(char string[])
    {
    int i;
    for(i=0;string[i]!='\0';i++)
    return i;
    }


    -----------------------------

     

    Hata şu, for un altına return i yazmişsin her forda return yani. İlk forda return edince 0 çıkıyor. yapman gereken şey for(i=0;string[i]!='\0';i++) bu satırın sonuna bi ; koymak yani içi boş for.


    -----------------------------

     

    eyvallah hocam teşekkürler,insan acemi olunca göremiyor işte napıcaksın :)

Toplam Hit: 1127 Toplam Mesaj: 7