如何从C中的字符串中删除引号

use*_*123 3 c quotes

我试图删除给定行中的所有引号,除了反斜杠后跟一个引号

我所做的就是这个

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)

这将删除行中的所有字符..我该怎么做才能删除引号?任何帮助,将不胜感激...

Ofi*_*fir 6

你的问题是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)