需要帮助删除C中的空字符

时间:2013-12-12 00:56:14

标签: c integer substring

这应该相对简单。 我有一个看起来像这样的字符串/字符指针

" 1001"

注意1.之前的空格。如何在保留整数之后删除此空格(不转换为字符或其他内容)?

5 个答案:

答案 0 :(得分:1)

最简单的答案是:

char *str = " 1001";
char *p = str+1; // this is what you need

答案 1 :(得分:1)

如果空格位于字符串的开头。你也可以这样做。

char *str = " 1001";
char c[5];
sscanf(str,"%s",c);
printf("%s\n",c);

%s将忽略缓冲区开头的第一个空格。

答案 2 :(得分:0)

这里有一个解决方案:How to remove all occurrences of a given character from string in C?

我建议通过创建一个包含所需字符的新字符串来删除空格字符或任何字符。

您似乎没有分配内存,因此您不必担心让旧字符串死掉。

答案 3 :(得分:0)

如果是字符指针,我相信

char* new = &(old++);

应该做的伎俩

答案 4 :(得分:0)

我猜你在stdin的整数字符串表示中读取并想要摆脱空格?如果您不能使用上面的其他技巧和实际需要修改内存,请使用以下函数。

您也可以使用sprintf完成工作。

我确信有更有效的方法来修剪字符串。这只是一个例子。

void trim(unsigned char * str)
{
  trim_front(str);
  trim_back(str);
}

void trim_front(unsigned char * str)
{
  int i = 0;
  int index = 0;
  int length = strlen(str);

  while(index < length && (str[index] == ' ' || str[index] == '\t' || str[index] == '\n'))
  {
    index++;
  }

  while(index < length)
  {
    str[i] = str[index];
    i++;
    index++;
  }
}

void trim_back(unsigned char * str)
{
  int i;

  for(i = 0; str[i] != ' ' && str[i] != '\n' && str[i] != '\t' && str[i] != '\0'; i++);

  str[i] = '\0';
}