• 11-01-2017, 21:57:46
    #1
    Merhabalar,

    Proje ödevimle ilgili küçük bir sorunum var. Aşağıdaki fonksiyonda girilen bir komutun ilk kelimesini analiz ediyorum. Daha sonra ilgili fonksiyonlara yolluyorum. Fakat bu fonksiyonlardan dönüşte program else kolunada giriyor. Yani hem else if lerden birine yada if e giriyor sonra üstüne birde else koluna giriyor program. Yardımcı olabilecek var mı?

    void komut_kontrol(){
         char tmp[30],tmp2=’ ’;
         i=0;
         while(komut!=tmp2 && komut!=NULL){ 
              tmp=komut;
              i++;
         }
         tmp[i]=NULL;
         if(strcmp(tmp,"ekle")==0){
              ekle();
         }
         else if(strcmp(tmp,"goruntule")==0) {
              goruntule();
         }
         else if(strcmp(tmp,"olustur")==0){
              olustur();
         }
         else if(strcmp(tmp,"sil")==0){
              sil();
         }
         else{
              system("cls");
              printf("Uyari: Hatalimi giris yaptiniz..!\\n\\n");
         }
    }

    Yukarıdaki fonksiyonu çağırdığım kısım burası:

    do{
              komut=NULL;
              komut=(char *)malloc(50*sizeof(char));
              ana_menu();
              if(strcmp(komut,"yardim")!=0 && strcmp(komut,"cikis")!=0){
                   komut_kontrol();
              }
              else if(strcmp(komut,"yardim")==0){
                   yardim_menu(); 
              }
         }while(strcmp(komut,"cikis")!=0);
    ana_menu() içerisinde komut dizisini tekrardan alıyorum.
  • 26-01-2017, 15:19:43
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    ana_menu() dediğin yerde scanf ile dinliyorsun fakat orda girdiğin komutu düzgün allac edemiyorsun komut değişkenine aslında 2. kod bloğundaki while çoklu çalışıyor o yüzden hem if e hem else e giriyormuş gibi geliyor sana.

    if(strcmp(komut,"yardim")!=0 && strcmp(komut,"cikis")!=0){
    komut_kontrol();

    şunun altına print atarsan ne demek istediğimi göreceksin.