DarrenTitor 发表于 2018-12-20 16:14:44

问一个输出结尾有乱码的原因

#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;
}要求和实现如图,请问为什么输出的末尾有乱码?谢谢

Mountain_gs 发表于 2018-12-20 16:24:57

abcd末尾有个'\n'

小酒酒呢 发表于 2018-12-20 16:46:51

楼主可能还是不熟悉fgets 函数每次读取一行且会读入 ‘\n’换行符虽然会补充 ‘\0’但是在本程序的加密过程中'\n'也参与了运算   故显示出其加密后的字符。

解决方法也简单。把判断条件改为
        for(i = 0; str!='\n'; i++)
希望能解决楼主的疑惑。最后,脸红得求一下最佳答案,和评分

DarrenTitor 发表于 2018-12-20 17:13:16

Mountain_gs 发表于 2018-12-20 16:24
abcd末尾有个'\n'

谢谢
页: [1]
查看完整版本: 问一个输出结尾有乱码的原因