• This topic is empty.
Viewing 1 post (of 1 total)
  • Author
    Posts
  • #238
    admin
    Keymaster

      In case of HELLO as plaintext,

      int s[0] – 65 == argv[1][7]

      A problem faced is how to express int s[0] – 65 = 7 within argv[1][ ].


      Reply


      Why do you want to check if ‘H’ – 65 has same value as the 8th element of the key?

      ‘H’ – 65 = 72 – 65 = 7

      So on the left side you have found the position of ‘H’ in the alphabet and that is great! Use that position to find the substitute letter, not to compare with it 🙂


      Query


      int s[0] – 65 == argv[1][7]

      It is clear that s[0] will have the value of argv[1][7].

      I doubt the below the right way:

      int s[0] – 65 = argv[1][7]

      as how can I put 7 inside argv[1][7]. I think I need to find a way to put 7 in second square bracket in a way that captures input from int s[0] – 65 instead of directly putting 7. Any clue appreciated.


      Reply


      I think I need to find a way to put 7 in second square bracket in a way that captures input from int s[0] – 65

      There you kind of have it yourself ….. just forget about the number 7!!! Use what leads you to 7, “s[0] – 65”!! You don’t need to find a way, just do it:

       

      There! No special way, just put your expression inside the brackets 🙂

      Then make your loop to get all the letters of your plaintext, not only s[0]. Almost there 🙂


      Query


      argv[1] – 65]

      Could you please explain why

      argv[1][int s[0] – 65] not used. My understanding is that since we are doing arithmetical calculation, int s[0] will fetch 72 and s[0] will fetch H. The reason could be as the end output (8th key) will be fetched in the alphabet and not its index. If so, then s[0] – 65 is able to perform arithmetical calculation?

      I actually tried with s = argv[1][int s – 65]; and it is showing error.


      Reply


      When you use “int” in that line it looks to C like you are trying to declare a new int variable and that does not make sense.

      To get the understanding of char and int in the context of letters try to run this short program:

      
      
      #include 
      
      int main(void)
      {    
          char letters[4] = {'A', 'B', 'C', 'D'};    
          printf("Letter as char: %c\n", letters[0]);
          printf("Letter as int: %i\n", letters[0]);
          printf("Letter as int in formula: %i\n", letters[0] - 65);
      }

      You will see that ‘A’ can be used both as a number and as a character and can be used directly in a formula 🙂

      What you are trying to do with “int s[0]” is to “cast” s[0] as an integer. The syntax for doing that in C is “(int) s[0]” …. but that is not needed here.


      Reply


      On Edx forum, one expert advised to use a variable (https://edstem.org/us/courses/176/discussion/1164829?comment=2689537). I have come up with this code:

      int s[0] – 65 = t

      s[0] = argv[1][t]

      Is the above correct?

      [learn_press_profile]

    Viewing 1 post (of 1 total)
    • You must be logged in to reply to this topic.
    Scroll to Top