gpt4 book ai didi

c - 为什么 scanf 不能处理我的字符串,而是不会停止到分隔符并创建一堆数字和字母,这些数字和字母变为空?

转载 作者:行者123 更新时间:2023-11-30 20:03:21 25 4
gpt4 key购买 nike

我尝试在各个网站上查找有关我的问题的信息,但我仍然无法理解代码出了什么问题。

我没有得到预期的书面字符串,而是得到一个等于 null 的随机 100 长数字和字符组合(以输入的字符串开头,后跟分隔符)。

#include <stdio.h>
#include <string.h>

int main()
{
char message[100], ans;
int key = 3;


printf("Enter a message:");
scanf("%s", message); //keeps on going until reaches 100 random characters and numbers
printf("Encrypt [E] or decrypt [D]?: ");
scanf("%s", &ans);
}

我在网上尝试了各种方法,但似乎都不起作用。

编辑:即使我尝试一个简单的字符串程序也不起作用

#include <stdio.h>
#include <string.h>

int main()
{
char message[100];


printf("Enter a message:");
scanf("%s", message);
printf("Encrypted message: %s", message[100]);
}

我通过 dev c++ 控制台提供输入。

编辑2:这是程序收到的消息输入:message

请注意,分隔符(单词后面的“\”)实际上并没有完成他的工作。

EDIT3:这是程序的全部代码

#include <stdio.h>
#include <string.h>

void decryptmessage(char message[], int key)
{
char ch;
int i;

for(i = 0; message[i] != '\0'; ++i){
ch = message[i];

if(ch >= 'a' && ch <= 'z'){
ch = ch - key;

if(ch < 'a'){
ch = ch + 'z' - 'a' + 1;
}

message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch - key;

if(ch < 'A'){
ch = ch + 'Z' - 'A' + 1;
}

message[i] = ch;
}
}

printf("Decrypted message: %s", message);
}


void encryptmessage(char message[], int key)
{
char ch;
int i;

for(i = 0; message[i] != '\0'; ++i){
ch = message[i];

if(ch >= 'a' && ch <= 'z'){
ch = ch + key;

if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}

message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key;

if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}

message[i] = ch;
}
}

printf("Encrypted message: %s", message);
}

int main()
{
char message[100], ans;
int key = 3;


printf("Enter a message:");
scanf("%s", message);
printf("Encrypt [E] or decrypt [D]?: ");
scanf("%c", &ans);

if (ans == 'E') //this has to be substituted by its numerical value
encryptmessage(message, key);
else if (ans == 'D') //same as line 78
decryptmessage(message, key);
else
printf("Goodbye.");
return 0;
}

现在,当消息按预期工作时,char ans 会自动变为值 10,而无需我为其提供输入。我实在说不出为什么。

最佳答案

您将“ans”创建为字符,而您希望用户输入字符串,则应该使用 %c 从输入中获取字符变量。编辑:在你的“只需扫描并打印一个字符串”上,我尝试运行它,问题出在打印部分,你正在打印“消息[100]”,它不存在,因为字符串有0-99个位置,你只需要打印“消息”

关于c - 为什么 scanf 不能处理我的字符串,而是不会停止到分隔符并创建一堆数字和字母,这些数字和字母变为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52594863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com