如何使用2个单独的函数“fgets”写入2个单独的变量?

时间:2014-01-23 01:55:00

标签: c fgets fputs

我有一个代码:

 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”,然后在成功写入后写入另一个变量。但是,我只能写变量“text”,而不是变量“key”,而文本显示方式错误。我该如何解决? (抱歉英文不好)

1 个答案:

答案 0 :(得分: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");
        }
}