问一个输出结尾有乱码的原因
#include <stdio.h>#define MAX 20
void encrypt(char str, int key)
{
int i;
for(i = 0; str!='\0'; i++)
{
str=(char)((int)str+i+key);
}
printf("%s", str);
}
int main()
{
char str;
fgets(str, MAX, stdin);
int key;
scanf("%d", &key);
encrypt(str, key);
return 0;
}要求和实现如图,请问为什么输出的末尾有乱码?谢谢
abcd末尾有个'\n'
楼主可能还是不熟悉fgets 函数每次读取一行且会读入 ‘\n’换行符虽然会补充 ‘\0’但是在本程序的加密过程中'\n'也参与了运算 故显示出其加密后的字符。
解决方法也简单。把判断条件改为
for(i = 0; str!='\n'; i++)
希望能解决楼主的疑惑。最后,脸红得求一下最佳答案,和评分 Mountain_gs 发表于 2018-12-20 16:24
abcd末尾有个'\n'
谢谢
页:
[1]