gpt4 book ai didi

c - printf 不打印最后一个字符

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:40 25 4
gpt4 key购买 nike

我正在编写一个简单的代码来模拟凯撒的密码,但我遇到了一个奇怪的错误,尽管输出字符串 fraseout[] 的格式正确并且在最后一次打印时正确打印它得到它的最后一个字符修剪。为什么会这样?

#include <stdio.h>
#include <string.h>
#include <math.h>
int main (void)
{
printf("Insira a frase:\n");
char frase [256];
scanf("%s", frase);
int size = (int)strlen(frase);
printf("Insira o tamanho da divergência: \n");
int diff = 0;
scanf("%i", &diff);
char fraseout [size];
int i = 0;
for (i = 0; i<=size-1; i++)
{
int val = (int)frase[i];
if (val + diff > 126)
{
val = 31+diff-(126-val);
}
else if (val +diff < 32)
{
val = 127 + diff+(val-32);
}
else
{
val +=diff;
}
fraseout [i] = (char)val;
}

printf("\"%s\" -> \"%s\"\n", frase, fraseout);
return 0;
}

最佳答案

fraseout 的长度不足以容纳 NULL 终止字节,因此您需要将其变大:

char fraseout [size+1];

此外,在构建 fraseout 之后,您需要确保它以 NULL 终止,否则您将打印垃圾:

fraseout[size] = '\0';

关于c - printf 不打印最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594318/

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