第二个printf没有出现,我不确定为什么

时间:2020-10-15 00:16:53

标签: c

这是我的代码。按下第一个printf的Enter键后,第二个getcharscanf不会弹出。我不确定第二个printfgetchar为何不起作用以及解决方法。

#include <stdio.h>
int main()
{
    int choice;
    int i;
    i = 0;
    int n;
    n = 1;
    int p;
    char message[1000];
    printf("Would you like to (1) encrypt or (2) decrypt?: ");
    scanf("%i\n", choice);
    printf("\nType your message: ");
    message[p] = getchar();

    for (i = 1; (i < 1000 && message[p] != '\0');) {
        message[p] = message[p] + n;
        n + 1;
    }

    for (i = 0; (i < 1000 && message[p] != '\0');) {
        message[p] = message[p] - n;
        n + 1;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您的加密方法适用于加密和解密。编译并接收一个包含空格的字符串,对其进行修改并打印出来。

   #include <stdio.h>
   int main()  {
       int choice;
       char temp;
       int i = 0;
       int n = 1;
       int p, b;
       char message[1000];
       char endmessage[1000];
       printf("Would you like to (1) encrypt or (2) decrypt?: ");

       scanf("%i", &choice); // change as per comment above
       scanf("%c", &temp); /* temp statement to clear buffer otherwise a second character has to be typed before the next print statement is executed */
       printf("Type your message: "); //prompt added for user clarity
       scanf("%[^\n]", message);  /* this scanf line allows for spaces in the message */
       printf("\nmessage typed is:  %s \n", message);
       p = (sizeof( message) + 1);  /* strings need to have an ending '\0'
       message[p] = '\0';
       if (choice == 1) {
           for (i = 0; (i < 1000 && message[i] != '\0');) {
               endmessage[i] = (message[i] + n);
               i +=1;
           }
           b = (sizeof( endmessage)); // replace encripted \0 with '\0'
           endmessage[b] = putchar('\0');
           printf("\nYour message encripted is: %s\n\n", endmessage);        
       }
       if (choice == 2) {
           for (i = 0; (i < 1000 && message[i] != '\0');) {
               endmessage[i] = message[i] - n;
               i += 1;
           }
           b = (sizeof(endmessage) -2); // replace decripted \0 with '\0'
           endmessage[b] = putchar('\0');
           printf("\nYour message decripted is: %s\n\n", endmessage);

       }

   }