[Çözüldü] Parola sorup denetleyen C kodu

Başlatan ZooM, 17 Ağustos 2010 - 12:31:15

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ZooM

arkadaslar sudo'nun yeni sayisini inceledim okudum guzel yazilmis. C programlama cok yetersiz gibi geldi bana ama yinede emek veren arkadaslara tesekkur ederim.

ben kullanici adi sifre soran bi panel yazmaya calisiyorum ama sorun var cozemedim. bi bakar misinz?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
*   
*/
int main(int argc, char** argv) {

    char log[64];
    char pass[64];
    int x;

    printf("Kullanici adinizi girin. \n");
    scanf("%c", &log);
    printf("girlen kullanici adi : %c \n", log);

    while (x = 0) {
        if (strcmp(log, "admin") == 0) {
            printf("Kullanici adi dogru");
            x = 1;
        } else {
            printf("kullanici adi yanlis");
            x = 0;
        }
    }
    return (EXIT_SUCCESS);
}

burada nerde yanlis var acaba?
If I was your vampyre...

aybars

scanf ve printf fonksiyonlarında ki "%c" tek karakter için kullanılmalıdır."%s" şeklinde kullanırsan sorun çözülür.
Bu arada c ile programlama ne gibi açılardan yetersiz geldi bunları belirtirsen önümüzde ki sayılarda ona göre daha verimli bir konu çıkar.

ZooM

en azindan bir iki konu daha anlatailabilirdi cunku 1 ay sadece bu kadar konu uzerinde beklenilmemeli.
birde while dongusu dogru mu ? sifreyi admin olarak girince kullanici adi dogru demiyor. yada yanlis da demiyor.
If I was your vampyre...

aybars

while (x = 0) {
        if (strcmp(log, "admin") == 0) {
            printf("Kullanici adi dogru");
            x = 1;
        } else {
            printf("kullanici adi yanlis");
            x = 0;
        }
    }

kısmını
if(!(strcmp(log, "admin"))) {
            printf("Kullanici adi dogru");
        } else {
            printf("kullanici adi yanlis");

şeklinde değiştir.

ZooM

while'i koymamin amaci kullanici adi yanlis ise tekrar sordurmak. bu kod da ise yanlis ise program sonlaniyor.
If I was your vampyre...

aybars

O zaman while'ı yanlış yere koymuşsun.Scanf fonksiyonun üstüne alman lazım.Bu şekilde olursa aynı kullanıcı adını tekrar tekrar kontrol eder ve sonuç  değişmez.

ZooM

Alıntı yapılan: aybars - 17 Ağustos 2010 - 13:10:43
O zaman while'ı yanlış yere koymuşsun.Scanf fonksiyonun üstüne alman lazım.Bu şekilde olursa aynı kullanıcı adını tekrar tekrar kontrol eder ve sonuç  değişmez.

int main(int argc, char** argv) {

    char log[64];
    char pass[64];
    int x;


   
    printf("Kullanici adinizi girin. \n");
    while (x=0) {
    scanf("%s", &log);
    printf("girlen kullanici adi : %s \n", log);
   
if(!(strcmp(log, "admin"))) {
            printf("Kullanici adi dogru\n");
            x=1;
        } else {
            printf("kullanici adi yanlis\n");
            x=0;
    }
    }
    return (EXIT_SUCCESS);
}


Bu sekilde mi ?
If I was your vampyre...

aybars


ZooM

ama bu sekilde dogru da girsem yanlis da girsem sonuclanmadan kapaniyor program
If I was your vampyre...

alquirel

while parantezine karşılaştırma değil atama girmişsin

yani x=0 dediğinde x i 0 yapıyor. sonra çıkıyor
yapman gereken x==0 demek, yani x 0 a eşit mi?

aybars


ZooM

Alıntı yapılan: alquirel - 17 Ağustos 2010 - 13:24:26
while parantezine karşılaştırma değil atama girmişsin

yani x=0 dediğinde x i 0 yapıyor. sonra çıkıyor
yapman gereken x==0 demek, yani x 0 a eşit mi?
yine de olmadi...

amacim su : eger yanlis ise... x;  0'a esit olacak  dogri ise 1. eger yanlis ise tekrar donguye giricek. Acaba dusuncemde mi yanlislik var?
If I was your vampyre...

aybars

Hayır orada bir sorun yok.
int x=0;
şeklinde tanımla değişkeni.

ZooM

Tesekkur ederim simdi oldu. Simdi sifre girme kismna geceyim :)
If I was your vampyre...

aybars

if(!strcmp(log, "admin") && (!strcmp(pass, "admin"))
şeklinde yapabilirsin.

ZooM

Alıntı yapılan: aybars - 17 Ağustos 2010 - 13:37:40
if(!strcmp(log, "admin") && (!strcmp(pass, "admin"))
şeklinde yapabilirsin.
/*
* File:   main.c
* Author: zoom
*
* Created on 16 Ağustos 2010 Pazartesi, 22:47
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
*   
*/
int main(int argc, char** argv) {

    char log[64];
    char pass[64];
    int x=0;
    int y=0;

    while (x==0) {
   
    printf("Kullanici adinizi girin. \n");
    scanf("%s", &log);
    printf("girlen kullanici adi : %s \n", log);
   
if(!(strcmp(log, "admin"))) {
            printf("Kullanici adi dogru\n");
            x=1;
        } else {
            printf("kullanici adi yanlis\n");
            x=0;
    }
    }

    while (y==0) {
        printf("Sifrenizi giriniz\n");
        scanf("%s",pass);
        printf("girilen sifre %s", pass);
        if(!(strcmp("1244244",pass))){
            printf("sifre dogru");
            y=1;
        }
        else { printf("girilen sifre yanlis\n");
        y=0;
        }

    }
    return (EXIT_SUCCESS);
}



seklinde yaptim ve bitti :) cozumledim. ilgilenen herkese tesekkur ederim. bir daha ki baslikda gorusmek dilegiyle :)
If I was your vampyre...