我试图删除给定行中的所有引号,除了反斜杠后跟一个引号
我所做的就是这个
for (int i = 0; i < lineLength; i ++) {
if (line[i] == '"' ) {
if (line[i-1] == '\\') // if \" is used
line[i-1] = '"'; // then print \
line[i] = '\0'; // or 0
}
}
Run Code Online (Sandbox Code Playgroud)
这将删除行中的所有字符..我该怎么做才能删除引号?任何帮助,将不胜感激...
你的问题是line[i] = '\0';- 它终止了字符串.
如果要从C字符串中删除字符,则需要保存两个索引 - 一个用于读取,一个用于写入,循环读取索引读取每个字符,并仅使用第二个索引写入要保留的索引.
有点像:
int j = 0;
for (int i = 0; i < lineLength; i ++) {
if (line[i] != '"' && line[i] != '\\') {
line[j++] = line[i];
} else if (line[i+1] == '"' && line[i] == '\\') {
line[j++] = '"';
} else if (line[i+1] != '"' && line[i] == '\\') {
line[j++] = '\\';
}
}
//You missed the string termination ;)
if(j>0) line[j]=0;
Run Code Online (Sandbox Code Playgroud)