gpt4 book ai didi

C++ |为什么执行这个程序后会出现奇怪的字符?

转载 作者:行者123 更新时间:2023-11-30 02:18:32 27 4
gpt4 key购买 nike

myString 中输入一些字母后,我得到的输出包含与 myString 完全相同的字母以及一些奇怪的乱序字符。例如,我输入 “letters”,我得到的输出如下:

字母 ÷ìu ╝■( Bñìu¿Å{N´■ b◄ÿu─[uÉpB ö ( ¯pB ÉpB P4å Ç

此外,这些奇怪的字符在不同的输入下显得不同,但在使用相同的输入重建后它们不会改变。

这是我写的代码:

#include <iostream>
using namespace std;
int main()
{
constexpr int BUFFER_SIZE = 128;

char myString[BUFFER_SIZE + 1] = {}; // + 1 for null. Initialize all with null.

cout << "Enter a string: ";
fgets(myString, BUFFER_SIZE, stdin);

int myString_size = sizeof(myString);
for (int i = 0; i < myString_size; i++) {
cout << myString[i];
}
system("PAUSE");
return 0;
}

现在,我知道 fgets() 函数会在字母 的末尾放置一个换行符但为什么这些字符仍然出现?

最佳答案

C 字符串的长度等于字符串开头和终止空字符之间的字符数(不包括终止空字符本身)。要获取 C 字符串的长度,请使用:

size_t myString_size = strlen(myString);

然后,循环应该看起来像:

for (size_t i = 0; i < myString_size; i++) {
cout << myString[i];
}

关于C++ |为什么执行这个程序后会出现奇怪的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028531/

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