1

私が書いているプログラムでは、文字列の最後の文字であるアンパサンド文字を削除する必要があります。たとえば、 がchar* str含まれている場合は"firefox&"、アンパサンドを削除して、 をstr含むようにする必要があります"firefox"。誰もこれを行う方法を知っていますか?

4

5 に答える 5

17

最後の文字を '\0' に設定するだけです:

str[strlen(str)-1] = '\0';

C では\0、文字列の終わりを示します。

于 2013-09-22T22:50:08.193 に答える
1

C のすべての文字列は '\0' で終わります。したがって、これを行う必要があります:

int size = strlen(my_str); //Total size of string
my_str[size-1] = '\0';

このようにして、最後の文字を削除します。

于 2013-09-22T22:51:26.060 に答える
0

参考までに、標準関数strchrはまさにそれを行います。指定された文字セットで文字列を効果的に分割します。文字を0x00に置き換えることで機能します

恥知らずに盗まれた例: cplusplus.com

#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a firefox& string";
  char * pch;
  printf ("Looking for the '&' character in \"%s\"...\n",str);
  pch=strchr(str,'&');
  while (pch!=NULL)
  {
    printf ("found at %d\n",pch-str+1);
    pch=strchr(pch+1,'&');
  }
  return 0;
}
于 2013-09-22T22:53:23.137 に答える
0

最後の文字を確認し、'&' の場合は '\0' (ヌル ターミネータ)に置き換えます。

int size = strlen(my_str);
if (str[size - 1] == '&')
    str[size - 1] = '\0';
于 2013-09-22T22:53:34.120 に答える
0

安全のために:

if (str != NULL)
{
    const unsigned int length = strlen(str);
    if ((length > 0) && (str[length-1] == '&')) str[length-1] = '\0';
}
于 2013-09-22T22:51:52.423 に答える