c++ - 在反转字符串“my.name.is”时,我得到的输出为“is@.name.my”。我不明白“@”是从哪里来的
问题描述
给定一个长度为 S 的字符串,反转整个字符串而不反转其中的单个单词。单词用点分隔。
输入:第一行包含 T 表示测试用例的数量。T 测试用例如下。每个 case 都包含一个包含字符的字符串 S。
输出:对于每个测试用例,在新行中,输出包含反转字符串的单行。
约束:1 <= T <= 100 1 <= |S| <= 2000
示例:输入:
i.like.this.program.very.much
输出:much.very.program.this.like.i
#include <bits/stdc++.h>
using namespace std;
int main() {
//code
int t;cin>>t;
while(t--) {
string s;
cin>>s;
stack<string> st;
int siz = s.size();
char c[siz];
for(int i =0;i<siz;i++) {
c[i] = s[i];
}
char *token = strtok(c,".");
while (token != NULL)
{
st.push(token);
st.push(".");
token = strtok(NULL, ".");
}
st.pop();
while(!st.empty()) {
cout<<st.top();
st.pop();
}
cout<<"\n";
}
return 0;
}
解决方案
当你这样做
char c[siz];
for(int i =0;i<siz;i++) {
c[i] = s[i];
}
您不附加0
toc[]
来标记字符串的结尾。
如果您用作siz + 1
数组大小,并在末尾放置一个零(空字符),它将起作用。
但是,您仍然不应该使用 VLA。
推荐阅读
- php - 我想在我的页面上显示可排序的表格,但它没有返回记录,我看不出问题出在哪里
- android - Android ExoPlayer 播放列表在完成时暂停当前曲目
- javascript - 如何使用 Javascript 在此处应用递归函数?
- java - 切换到新活动作为奖励广告奖励
- performance - ASP.NET Core 3.1 慢速发布到 FTP
- react-native - 如何在 Cognito 用户池中确认用户而不使用 react native 验证电子邮件?
- python - FFmpeg python不合并
- javascript - 首次启动网站时,Fetch API 需要一些时间
- python - 如何使用函数将(字符串)变量的内容放入字符串中 - Python
- python - 如何根据用户所在的选项卡告诉功能工作?