0

我有一个代码:

 char *text, *key;
 char str[200];
 fputs("Please, enter the text, you want to encrypt:", stdout);
 printf("\n");
 if((text=fgets(str, sizeof(str),stdin))!=NULL)
 {
     printf("Text to encrypt:\n""");
     fputs(text, stdout);
     printf("""\n");
 }


 fputs("Please, enter the key:", stdout);
 printf("\n");
 if((key=fgets(str, sizeof(str),stdin))!=NULL)
 {
     printf("Key:\n""");
     fputs(key, stdout);
     printf("""\n");
 }

我是这样做的,因为我想先写入变量“文本”,然后在成功写入后写入另一个变量。但是,我只能写变量“text”,而不能写变量“key”,并且文本显示错误。我该如何解决?(抱歉英语不好)

4

1 回答 1

3

fgets写入作为其第一个参数的字符串。由于您使用的是相同的字符串,因此第二个fgets是从第一个覆盖字符串。你需要两个字符串。

#include <stdio.h>

int main() {
    char text[200], key[200];
    fputs("Please, enter the text, you want to encrypt:", stdout);
    printf("\n");
    if(fgets(text, sizeof(text),stdin)!=NULL)
        {
            printf("Text to encrypt:\n""");
            fputs(text, stdout);
            printf("""\n");
        }


    fputs("Please, enter the key:", stdout);
    printf("\n");
    if(fgets(key, sizeof(key),stdin)!=NULL)
        {
            printf("Key:\n""");
            fputs(key, stdout);
            printf("""\n");
        }
}
于 2014-01-23T02:01:11.210 回答