我有一个
char s9[7] = "[abcd]";
如何删除括号[]
以便
s9 == "abcd"
我试过了
s9 = s9.Substring(1, s9.Length-2);
在cygwin中抛出错误
a2v2.c:42:13: error: request for member ‘Substring’ in something not a structure or union
a2v2.c:42:29: error: request for member ‘Length’ in something not a structure or union
编辑:
我意识到我的错误,我是c的初学者,无法区分c和C ++代码,问候
答案 0 :(得分:3)
如果它是严格的C,那么你将需要使用更多基本函数(char []数组与C ++中的字符串类几乎没有共同之处)。要使用的一些功能可能是:
答案 1 :(得分:3)
删除字符串实际开始和结束的所有检查:
int len = strlen(s9);
for ( i = 0; i < len - 2; ++i )
s9[i] = s9[i + 1];
s9[len - 2] = '\0';
答案 2 :(得分:3)
memmove( s9, s9 + 1, 4);
s9[4] = 0;
答案 3 :(得分:3)
最重要的是,如果你想成为C程序员就是你学习了C.至少,你需要查找“字符串操作C”并阅读弹出的任何页面。
有很多方法可以做你想要的。我认为这是更快的一个(虽然它修改了你正在看的字符串。如果重要,请选择另一种方式):
// trim off the last character
s9[strlen(s9) - 1] = '\0';
// the char * points to the s9 array. +1 makes it look at
// the second element, so then substring is the string you need
char * substring = s9 + 1;
答案 4 :(得分:2)
int len = strlen(s9);
memmove(s9, (s9+1), len-2); /* can handle overlapping strings */
s9[len-2] = 0; /* null terminate */