1

如果它是字符串的最后一个字符,我正在编写的程序需要删除一个 & 字符。例如,如果char* strcontains "firefox&",那么我需要删除与号,以便strcontains "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

为了安全起见:

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 回答
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 回答