我也得到了垃圾输出
I am getting junk output also
本文关键字:输出 更新时间:2023-10-16
我正在尝试使用 Reverse 函数反转字符串。 如果我输入输出数组的大小 10 并给出 10 个值作为输入,我给出完美的输出。但是如果我使用 str.size(( 初始化输出数组的大小,它也给出了一些垃圾值。
#include<iostream>
#include<string>
using namespace std;
string Reverse(string str)
{
cout<<str.size()<<endl;
char output[str.size()];
int temp = 0;
for(int i = str.length()-1 ; i >= 0 ; i--)
{
output[temp] = str[i];
temp++;
}
return output;
}
int main()
{
char st[100];
cout<<Reverse(gets(st));
return 0;
}
除了其他人已经指出的缺少NULL
终结者之外,这里还有几个问题:
-
使用已弃用且危险的函数
gets
。该函数不提供任何方法来防止目标数组的缓冲区溢出,给定足够长的输入字符串。
std::gets
在 C++11 中被弃用,并从 C++14 中删除。可以改用
std::fgets
。 -
在
Reverse
函数中使用可变长度数组(可以是编译器扩展(,这是标准C++不支持的功能。char output[str.size()];
由于您已经在程序中使用了std::string
,因此您也可以将其用于output
变量,这将解决您的NULL
终止问题。
如果不阻止您使用标准库算法,则可以使用 std::reverse
代替 Reverse
函数。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 如何根据单词在文本中出现的概率输出单词