字符串处理
原题链接
- 需要注意的是可能出现多处注释,所以我标记完一个完整的注释内容后就先消除这一段注释,这样for循环中就多了一个用于char数组覆盖的for,会更复杂,然后接着遍历后面的字符,如果有注释也是先消除后再继续,这时候for循环的时候注意 i 的及时更新。
- 看了别人的代码,可以一边遍历然后输入,控制是否输出的flag就行。好! Better
- 字符串的下标还有用来标记的flag和mark多了容易乱,加好注释或者多输出一下调试一下。
#include<iostream>
using namespace std;
char s[1006];
int main()
{
char c;
int x=0;
while((c = cin.get())!=EOF)
{
s[x++] = c;
}
s[x] = '\0';
int flag = 0;
int index_begin = 0;
int index_end = 0;
for(int i=0; i<x; i++)
{
int mark =0 ;
if(flag==0&&s[i]=='/'&&(s[i+1]=='/'||s[i+1]=='*'))
{
index_begin= i;
if(s[i+1]=='/')
flag = 1;
else
flag = 2;
}
if(flag == 1)
{
if(s[i]=='\n')
{
index_end = i-1;
flag = 0;
mark = 1;
}
}
if(flag == 2)
{
if(s[i]=='*'&&s[i+1]=='/')
{
index_end = i+1;
flag = 0;
mark = 1;
}
}
if(mark==1)
{
int len = index_end-index_begin;
for(int j = index_begin; j<strlen(s); j++)
{
s[j]=s[j+len+1];
i=index_begin;
}
}
}
for(int i=0; i<strlen(s); i++)
{
cout<<s[i];
}
}