folder Tahribat.com Forumları
linefolder C - C++
linefolder C'de "Struct" İçerisinde "String" Tanımlarken Hata Alıyorum



C'de "Struct" İçerisinde "String" Tanımlarken Hata Alıyorum

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    rajooonn
    rajooonn's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek

     Herkese merhaba, 

    Okuldan bir proje verdiler onu kodlamakla uğraşıyorum proje biraz uzun fakat bir kısmında run time error hatası alıyorum sorum o kısmınla ilgili. Şimdi projenin genel amacı Ağaç yapısını kullanarak işkur gibi bir kuruma 
    iş arayanların giriş yapması, firmaların ise girişleri görüntülemesini sağlamak. İş arayanlar giriş yaparken isim-adres-telefon- mail gibi bilgiler tanımlaması lazım. 

    Sorun burada başlıyor isim-adres-telefon girerken problem yaşıyorum fakat email istediğim değişkeni tanımladığım run-time-error alıyorum. Sebebi ne olabilir, anlamlandıramadım. 

     

    Not: Kullandığım derleyici Code::Blocks.

    Kod Aşağıdaki gibi:

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

     

    struct bin_tree {

     

        char *name;

        char *address;

        char *email;

        

        int phone;

     

        struct bin_tree* left;

        struct bin_tree* right;

    };

     

    typedef struct bin_tree node;

     

     

    void insert(node** leaf, char* name_f)

     {

     

        if(*leaf == NULL)

        {

            *leaf = (node*) malloc( sizeof( node ));

            (*leaf)->name = malloc( strlen (name_f) +1 );

            strcpy ((*leaf)->name, name_f);

            (*leaf)->left = NULL;

            (*leaf)->right = NULL;

     

     

     

     

            printf("Adresinizi giriniz: ");

            scanf("%s", (*leaf)->address);

     

            printf("Telefon numaraniz : ");

            scanf("%d", &(*leaf)->phone);

     

            printf("Eposta giriniz   : ");

            scanf("%s", (*leaf)->email);

     

     

     

        }

     

        else if (strcmp(name_f, (*leaf)->name) < 0)

            {insert(&(*leaf)->left, name_f );

            }

        else if(strcmp(name_f, (*leaf)->name) > 0)

            {insert(&(*leaf)->right, name_f );

            }

        else

            printf ("%s zaten girilmis.\n", name_f);

     

     }

     

     

    int main()

    {

        node *instant = NULL;

     

     

        int selection, selection2;

        char name[40];

     

     

        printf("    *************************************\n");

        printf("    | Is basvurusu islemleri icin --> 1 |\n");

        printf("    | Eleman arama islemleri icin --> 2 |\n");

        printf("    | Cikis icin                  --> 3 |\n");

        printf("    |                                   |");

        printf("\n    *************************************\n");

        printf("Secim: ");

        scanf("%d", &selection);

     

        while(selection != 3)

        {

           if(selection == 1)

        {

            printf("\n\nSisteme kayit icin                     --> 1\n");

            printf("Sistem bilgilerinizi goruntulumek icin --> 2\n");

            printf("Sistemden cikmak icin                  --> 3\n");

            printf("Sistem bilgilerinizi guncellemek icin  --> 4\n");

            printf("Secim: ");

            scanf("%d", &selection2);

     

            switch(selection2)

           {

               case 1:

                      printf("Ad soyad giriniz  : ");

                      scanf("%s", name);

                      insert(&instant,name);

     

           }

     

        }

     

        else if(selection == 2)

        {

     

        }#include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

     

    struct bin_tree {

     

        char *name;

        char *address;

        char *email;

        

        int phone;

     

        struct bin_tree* left;

        struct bin_tree* right;

    };

     

    typedef struct bin_tree node;

     

     

    void insert(node** leaf, char* name_f)

     {

     

        if(*leaf == NULL)

        {

            *leaf = (node*) malloc( sizeof( node ));

            (*leaf)->name = malloc( strlen (name_f) +1 );

            strcpy ((*leaf)->name, name_f);

            (*leaf)->left = NULL;

            (*leaf)->right = NULL;

     

     

     

     

            printf("Adresinizi giriniz: ");

            scanf("%s", (*leaf)->address);

     

            printf("Telefon numaraniz : ");

            scanf("%d", &(*leaf)->phone);

     

            printf("Eposta giriniz   : ");

            scanf("%s", (*leaf)->email);

     

     

     

        }

     

        else if (strcmp(name_f, (*leaf)->name) < 0)

            {insert(&(*leaf)->left, name_f );

            }

        else if(strcmp(name_f, (*leaf)->name) > 0)

            {insert(&(*leaf)->right, name_f );

            }

        else

            printf ("%s zaten girilmis.\n", name_f);

     

     }

     

     

    int main()

    {

        node *instant = NULL;

     

     

        int selection, selection2;

        char name[40];

     

     

        printf("    *************************************\n");

        printf("    | Is basvurusu islemleri icin --> 1 |\n");

        printf("    | Eleman arama islemleri icin --> 2 |\n");

        printf("    | Cikis icin                  --> 3 |\n");

        printf("    |                                   |");

        printf("\n    *************************************\n");

        printf("Secim: ");

        scanf("%d", &selection);

     

        while(selection != 3)

        {

           if(selection == 1)

        {

            printf("\n\nSisteme kayit icin                     --> 1\n");

            printf("Sistem bilgilerinizi goruntulumek icin --> 2\n");

            printf("Sistemden cikmak icin                  --> 3\n");

            printf("Sistem bilgilerinizi guncellemek icin  --> 4\n");

            printf("Secim: ");

            scanf("%d", &selection2);

     

            switch(selection2)

           {

               case 1:

                      printf("Ad soyad giriniz  : ");

                      scanf("%s", name);

                      insert(&instant,name);

     

           }

     

        }

     

        else if(selection == 2)

        {

     

        }

     

        printf("\n\n    *************************************\n");

        printf("    | Is basvurusu islemleri icin --> 1 |\n");

        printf("    | Eleman arama islemleri icin --> 2 |\n");

        printf("    | Cikis icin                  --> 3 |\n");

        printf("    |                                   |");

        printf("\n    *************************************\n");

        printf("Secim: ");

        scanf("%d", &selection);

        }

     

     

     

        system("pause");

        return 0;

    }

     

     

     

     

        printf("\n\n    *************************************\n");

        printf("    | Is basvurusu islemleri icin --> 1 |\n");

        printf("    | Eleman arama islemleri icin --> 2 |\n");

        printf("    | Cikis icin                  --> 3 |\n");

        printf("    |                                   |");

        printf("\n    *************************************\n");

        printf("Secim: ");

        scanf("%d", &selection);

        }

     

     

     

        system("pause");

        return 0;

    }

     

     

     

     
    rajooonn tarafından 09/Ara/15 12:49 tarihinde düzenlenmiştir

    Gece! Vampir değilim ama geceyi çok severim. Yalnızsın, oyun oynuyorsun monitörün ışığı ve kendin.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    hocam kodlar karmakarisik olmus

    main icinde include var bi tekrar at bakalim

     


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    Hocam asagiya bak :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct bin_tree {
        char *name;
        char *address;
        char *email;
        int phone;
    
        struct bin_tree* left;
        struct bin_tree* right;
    };
    
    typedef struct bin_tree node;
    
    void insert(node** leaf, char* name_f)
     {
        if(*leaf == NULL)
        {
            *leaf = (node*) malloc( sizeof( node ));
            (*leaf)->name = malloc( strlen (name_f) +1 );
            strcpy ((*leaf)->name, name_f);
            (*leaf)->left = NULL;
            (*leaf)->right = NULL;
    
    
            (*leaf)->address = malloc( 30 );
            printf("Adresinizi giriniz: ");
            scanf("%s", (*leaf)->address);
    
            (*leaf)->phone = malloc( 30 );
            printf("Telefon numaraniz : ");
            scanf("%d", &(*leaf)->phone);
    
            (*leaf)->email = malloc( 30 );
            printf("Eposta giriniz   : ");
            scanf("%s", (*leaf)->email);
    
        }
        else if (strcmp(name_f, (*leaf)->name) < 0)
        {
            insert(&(*leaf)->left, name_f );
        }
        else if(strcmp(name_f, (*leaf)->name) > 0)
        {
            insert(&(*leaf)->right, name_f );
        }
        else
        {
            printf ("%s zaten girilmis.\n", name_f);
        }
    }
    
    int main()
    {
        node *instant = NULL;
        char name[40];
        printf("Ad soyad giriniz  : ");
        scanf("%s", &name);
        insert(&instant,name);
    
        system("pause");
        return 0;
    }

    Fonksiyonunda node icindeki adres,mail,telefon filedlerini malloc etmen gerekiyor

           (*leaf)->address = malloc( 30 );
            printf("Adresinizi giriniz: ");
            scanf("%s", (*leaf)->address);

            (*leaf)->phone = malloc( 30 );
            printf("Telefon numaraniz : ");
            scanf("%d", &(*leaf)->phone);

            (*leaf)->email = malloc( 30 );
            printf("Eposta giriniz   : ");
            scanf("%s", (*leaf)->email);

     

    NOT : Birde ad soyad diyosun dikkat et atiyorum "ahmet mehmet" yazdiginda o bosluktan sonrakini diger degisken icin alicaktir. yani adres=mehmet.

     


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    rajooonn
    rajooonn's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek

    Hocam çok teşekkür ederim. 


    Gece! Vampir değilim ama geceyi çok severim. Yalnızsın, oyun oynuyorsun monitörün ışığı ve kendin.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    Rica ederim hocam

    Bu arada sana soyle bisey yaptim menu olarak kullan umarim isine yarar

    #include<stdio.h>
    #include<conio.h>
    /*********************************************************/
    /* Yardimci fonksiyonlar ve tanimlar                     */
    /*********************************************************/
    
    //TRUE/FALSE kullanmak icin
    typedef enum{ FALSE=0 , TRUE=1 }BOOL;
    
    void EkraniTemizle()
    {
            clrscr();
    }
    /*********************************************************/
    /*     MENU CIKTILARI
    /*********************************************************/
    //MENU (ana menu)
    void AnaMenuYazdir()
    {
            EkraniTemizle();
            printf("====================\n");
            printf("    ANA MENU        \n");
            printf("====================\n");
            printf("(1) Secenek 1\n");
            printf("(2) Secenek 2\n");
            printf("(0) Cikis\n");
            printf("====================\n");
            printf("Seciminiz : ");
    }
    //MENU - 11
    void BirinciSecenekAltMenuYazdir()
    {
            EkraniTemizle();
            printf("====================\n");
            printf("1. secenek alt menu \n");
            printf("====================\n");
            printf("(1) Secenek 1\n");
            printf("(2) Secenek 2\n");
            printf("(2) Secenek 3\n");
            printf("(0) Cikis\n");
            printf("====================\n");
            printf("Seciminiz : ");
    }
    
    /*********************************************************/
    /*     MENU SECIMLERI
    /*********************************************************/
    /*
            anamenu = true olursa ana menuyu gosteriri <altmenu> degiskenine bakmaz
                      false olursa alt menu gosterir
            altmenu = true olursa <altmenu> degiskenindeki istenen menuyu gosterir
                      false olursa ana menuyu gosterir
    
            DIKKAT !!!
            anamenu ve altmenu false olurlarsa -1 dondurur
    
    */
    int MenuSec(BOOL anamenu, BOOL altmenu, int altmenuno)
    {
            int secim=-1;
            if(anamenu==TRUE)
            {
                    AnaMenuYazdir();
                    scanf("%i",&secim);
            }
            else if(altmenu==TRUE)
            {
                    //Alt menulerin secimlerinin yapildigi kisim
                    switch(altmenuno)
                    {
                            case 11:
                            BirinciSecenekAltMenuYazdir();
                            break;
                    }
                    scanf("%i",&secim);
            }
            return secim;
    }
    
    void main()
    {
            //menude secilen secenegin tutuldugu degisken
            int secim=-1;
            //eger alt menumuz var ise onun seciminin tutuldugu degisken
            int altmenusecimi=-1;
    
            do
            {
                    //ana menu secimi
                    secim = MenuSec(TRUE,FALSE,0);
                    switch(secim)
                    {
                            case 1:
                            //Eger 1 ise alt menu goster
                                    altmenusecimi = MenuSec(FALSE,TRUE,11);
                                    switch(altmenusecimi)
                                    {
                                            case 1:
                                            //Birinci alt menu secenek 1
                                            EkraniTemizle();
                                            printf("1nci secenek - 1nci alt menu secildi...");
                                            getch();
                                            break;
                                            case 2:
                                            //Birinci alt menu secenek 2
                                            break;
                                            case 3:
                                            //Birinci alt menu secenek 3
                                            break;
                                    }
                            break;
                            case 2:
                            //Eger 2 ise....
                            break;
                    }
            }
            while(secim != 0);
    
            //Ekrani kapatmadan once bir karakter okuyoruz
            getch();
    }

     


    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
Toplam Hit: 1699 Toplam Mesaj: 5
c struct