Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用两个单独的函数“;fgets“;用于写入两个单独的变量?_C_Fgets_Fputs - Fatal编程技术网

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
扫描
选项
读取
开关