为什么我在字符串交换程序中得到错误的输出
why am i getting false output in string swap program
'
要求的程序是输入两个字符串并打印它们各自的大小作为输出中的第一行,而第二行包含两个字符串的串联,输出的第三行包含两个字符串的第一个字符交换后的原始字符串。下面是我的代码。一切都在工作,除了在打印第二个字符串时,它正在打印不必要的字符,因为整个第二个字符串没有被打印PS:我是C ++的新手
int main()
{
string a,b,c;
cin>>a>>b;
int j=a.size();
int k=b.size();
char s[j],p[k];
cout<<a.size()<<" "<<b.size()<<endl;
c=a+b;
cout<<c<<endl;
for(int i=0;i<a.size();i++)
{
s[i]=a[i];
}
for(int i=0;i<b.size();i++)
{
p[i]=b[i];
}
char t;
t=s[0];
s[0]=p[0];
p[0]=t;
cout<<s<<" ";
cout<<p;
return 0;
}`
输入:DLXECXSYEbfjoosgukxgywz
输出:9 14dlxecxsyebfjoosgukxgywzBLXECXSYE@ dfjoosgukxgywz
期望的输出:9 14dlxecxsyebfjoosgukxgywzblxecxsye dfjoosgukxgywz
字符串 p 的大小为 k,即输入 b 的大小 (14(。
在 for 循环中,您从 0 迭代到输入 a (9( 的大小,在您的情况下,它小于输入 b 的大小。
当您在代码末尾输出 p 的内容时,不会设置 9 到 13 索引处的字符,并且您从内存中的该位置打印不需要的内容。
我不明白字符数组的必要性。
// Swapping first characters
char temp = a[0];
b[0] = a[0];
a[0] = temp;
请使用调试器并验证字符数组是否由 NUL 字符终止。
另请参阅:std::string::c_str()
和strncpy
。
相关文章:
- 显示错误输出的简单数组排序程序
- Dijkstra 中的错误输出
- 自定义runtime_error,如果我在 #what 中使用#c_str(),则错误输出始终为空
- 流字符串错误输出
- C++ 异常处理错误输出
- C ++中的错误输出,i = 65530,当我们打印i的值时,它给出-6状态65530
- SSE和iostream:浮点类型的错误输出
- C++将 popen 错误输出读取为字符串
- 部分透视/高斯消除 - 交换列而不是产生错误输出的行
- C++,向量:获得包含 0 的错误输出
- 数组函数错误输出
- CC1plus 错误:输出文件名指定两次
- 字符串错误输出
- 子斯特的错误输出
- 对大量c++错误输出完全一无所知.我认为这与预定义的函数和迭代器有关
- 简单程序的错误输出
- XCode调试器lldb中断,没有错误输出,但程序运行良好
- std::string::append(std::string)错误输出
- 查看大错误输出的顶行
- 使用结构的错误输出