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

需要帮助删除C中的空字符吗,c,integer,substring,C,Integer,Substring,这应该相对简单。 我有一个字符串/字符指针,如下所示 " 1001" 请注意1前面的空格。如何删除此空格,同时保留其后面的整数(不转换为字符或其他内容)?这里有一个解决方案: 我建议通过创建一个包含所需字符的新字符串来删除空格字符或任何字符 您似乎没有分配内存,因此不必担心旧字符串会死掉。最简单的答案是: char *str = " 1001"; char *p = str+1; // this is what you need 如果它是一个字符指针,我相信 char* new = &

这应该相对简单。 我有一个字符串/字符指针,如下所示

" 1001"

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

这里有一个解决方案:

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


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

最简单的答案是:

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

如果它是一个字符指针,我相信

char* new = &(old++);

应该这样做吗?

我猜你读的是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';
}
void trim(无符号字符*str)
{
前饰件(str);
向后修剪(str);
}
正面空白装饰(无符号字符*str)
{
int i=0;
int指数=0;
int长度=strlen(str);
而(索引
如果空格位于字符串开头,也可以这样做

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

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

这里有一些相关的答案值得一看:不太明白你在问什么。要将字符串转换为二进制,还是保留为字符串并删除空格?