-3

私は

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++ コードを区別できませんでした。

4

5 に答える 5

3

私が知っているC標準は数十年前のものなので、私が間違っている場合は誰かが私を訂正してくれるでしょうが、私の知る限り、Cは文字列操作の標準サポートを提供しておらず、実際には公式にサポートしていません.文字列の概念があります。(あるいは、オブジェクト関数のことです。) 代わりに、C はポインターを使用します。ポインターは、はるかに強力ですが、それらを回避する方法を学ばないと、物事を台無しにする可能性があるという点で、はるかに危険です。

C プログラマーになりたい場合、最も重要なことは、C を学ぶことです。少なくとも、「文字列操作 C」を調べて、ポップアップするページを読む必要があります。

あなたが望むことをする方法はたくさんあります。これはより高速なものの1つであると思います(ただし、見ている文字列を変更します。それが重要な場合は、別の方法を選択してください):

// 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;
于 2013-08-07T14:21:18.607 に答える
3
memmove( s9, s9 + 1, 4);
s9[4] = 0;
于 2013-08-07T14:19:12.553 に答える
3

文字列が実際にそれらの文字で開始および終了することのチェックをスキップします。

int len = strlen(s9);

for ( i = 0; i < len - 2; ++i )
  s9[i] = s9[i + 1];

s9[len - 2] = '\0';
于 2013-08-07T14:17:37.427 に答える