C'de "Struct" İçerisinde "String" Tanımlarken Hata Alıyorum
-
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;
}
-
hocam kodlar karmakarisik olmus
main icinde include var bi tekrar at bakalim
-
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.
-
Hocam çok teşekkür ederim.
-
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(); }