मैंने caesar-cipher एल्गोरिथम लागू किया लेकिन ऐसा लगता है कि मुझे सभी विवरण नहीं मिले क्योंकि जब मैं प्रोग्राम चलाता हूं, तो यह कुंजी को दो बार इनपुट करने के लिए कहता है!

#include <stdio.h>
#include <string.h>
#define SIZE 1024
char text[SIZE];
int text_2[SIZE];
int key;
int encoder(char text[SIZE]){
        printf("plaintext: \n");
        gets(text);
        for (int i = 0; i < strlen(text); ++i) {
            text_2[i] = (int) text[i];
            text_2[i] = text_2[i] + key;
            text[i] = (char) text_2[i];

        }
    return 0;
}

int main() {
    printf("enter the key: \n");
    scanf("%d\n",&key);
    if(key < 26 && key > 0){
        printf("nice!, now enter a word to encrypt it\n");
        gets(text); //this step is necessary to pass text onto encoder function.
        encoder(text);
        puts(text);
    } else{
       printf("Yeuch!!\n");
    }

}

आउटपुट का एक उदाहरण है:

enter the key: 
2 //I press 2 and nothing happens, then it asks for it again, hence why I have two 2's
2
nice!, now enter a word to encrypt it
plaintext: 
a
c

Process finished with exit code 0
1
Jorge Ávila Balmaceda 11 नवम्बर 2020, 07:13

1 उत्तर

सबसे बढ़िया उत्तर

%d न्यूलाइन कैरेक्टर को नजरअंदाज करता है - स्टड में न्यूलाइन कैरेक्टर शेष रहेगा, अगर आपका फॉर्मेट %d\n है, तो उसे दो एंटर की जरूरत है।

और gets(text) अगर क्लॉज न्यूलाइन कैरेक्टर को हटा देता है - आपको बस फॉर्मेट को %d में बदलना है।

समाधान:

int main() {
    printf("enter the key: \n");
    scanf("%d", &key);
    if (key < 26 && key > 0) {
        printf("nice!, now enter a word to encrypt it\n");
        gets(text); // this step is necessary to pass text onto encoder
                    // function.
        encoder(text);
        puts(text);
    } else {
        printf("Yeuch!!\n");
    }
}
1
jiho lee 11 नवम्बर 2020, 04:28