我有一个代码:
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”,而文本显示方式错误。我该如何解决? (抱歉英文不好)
答案 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");
}
}