C 如何使用两个单独的函数“;fgets“;用于写入两个单独的变量?
我有一个密码:C 如何使用两个单独的函数“;fgets“;用于写入两个单独的变量?,c,fgets,fputs,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(""
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”,并且文本的显示方式是错误的。我该如何解决这个问题?(很抱歉英语不好)
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");
}
}
#包括
int main(){
字符文本[200],键[200];
fputs(“请输入文本,您要加密:”,stdout);
printf(“\n”);
if(fgets(text,sizeof(text,stdin)!=NULL)
{
printf(“要加密的文本:\n”“”);
FPUT(文本、标准输出);
printf(“\n”);
}
fputs(“请输入密钥:”,标准输出);
printf(“\n”);
如果(fgets(键,sizeof(键),stdin)!=NULL)
{
printf(“键:\n”“”);
FPUT(键、标准输出);
printf(“\n”);
}
}
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");
}
}
#包括
int main(){
字符文本[200],键[200];
fputs(“请输入文本,您要加密:”,stdout);
printf(“\n”);
if(fgets(text,sizeof(text,stdin)!=NULL)
{
printf(“要加密的文本:\n”“”);
FPUT(文本、标准输出);
printf(“\n”);
}
fputs(“请输入密钥:”,标准输出);
printf(“\n”);
如果(fgets(键,sizeof(键),stdin)!=NULL)
{
printf(“键:\n”“”);
FPUT(键、标准输出);
printf(“\n”);
}
}
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");
}
}
#包括
int main(){
字符文本[200],键[200];
fputs(“请输入文本,您要加密:”,stdout);
printf(“\n”);
if(fgets(text,sizeof(text,stdin)!=NULL)
{
printf(“要加密的文本:\n”“”);
FPUT(文本、标准输出);
printf(“\n”);
}
fputs(“请输入密钥:”,标准输出);
printf(“\n”);
如果(fgets(键,sizeof(键),stdin)!=NULL)
{
printf(“键:\n”“”);
FPUT(键、标准输出);
printf(“\n”);
}
}
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");
}
}
#包括
int main(){
字符文本[200],键[200];
fputs(“请输入文本,您要加密:”,stdout);
printf(“\n”);
if(fgets(text,sizeof(text,stdin)!=NULL)
{
printf(“要加密的文本:\n”“”);
FPUT(文本、标准输出);
printf(“\n”);
}
fputs(“请输入密钥:”,标准输出);
printf(“\n”);
如果(fgets(键,sizeof(键),stdin)!=NULL)
{
printf(“键:\n”“”);
FPUT(键、标准输出);
printf(“\n”);
}
}
fgets
在这两种情况下都在写入str
。然后将text
和key
设置为指向str
。如果需要两个不同的变量,则需要两个不同的数组并完全丢失str
。一定要\n\“
而不是\n”“
fgets
在这两种情况下都写入str
。然后它将text
和key
设置为指向str
。如果需要两个不同的变量,则需要两个不同的数组。char text[200],key[200];
并完全丢失str
。在这两种情况下,您肯定想要\n\“
而不是\n”“
fgets
写入str
。然后将text
和key
设置为指向str
。如果需要两个不同的变量,则需要两个不同的数组并完全丢失str
。一定要\n\“
而不是\n”“
fgets
在这两种情况下都写入str
。然后它将text
和key
设置为指向str
。如果需要两个不同的变量,则需要两个不同的数组。char text[200],key[200];
并完全丢失str
。确定您想要\n\“
而不是\n”“
。好的,谢谢,现在应该写好了。但我在控制台中看到了这样的画面:它从写“文本”的字段跳转到“键”字段。但我希望它们分开显示:“文本”先显示,然后,只有在写“键”后才显示“这对我来说很好。在此之前是否有读取输入的代码?它可能会在输入中留下一个换行符,第一个fgets
正在读取该换行符。是的,在给定一个换行符之前有代码(从“fputs”开始),这里是:int main(){int option;char*text,*key;text=malloc(200*sizeof(char));key=malloc(200*sizeof(char));make_deck();//创建一个组printf(“选择选项:\n 1.加密\n 2.解密\n”);scanf(“%d”,&option);printf(“\n\n”);开关(option){case 1:printf(“选择选项:\n 1.输入\n 2.File\n”);scanf(“%d”,&option);printf(“\n\n”);开关(option){案例1:
scanf
不读取换行符。使用fgets
读取输入,然后使用sscanf
从中获取数字。我使用scanf
扫描选项
读取开关