C 如何从字符串中删除一个字符并保留其余字符?

标签 c

我想从“#-9”等字符串中删除字符“#”,并将其余字符转换为整数值。我知道如何将字符串转换为整数而不使用“#”,所以我尝试使用代码删除它

void delChar(char *str, int x) {
    char *q;
    q = str;
    while(*q == *(q+1)) q++;
    *q='\0';
}

但是它会终止字符串,那么我该如何解决这个问题。

最佳答案

这是完整的工作代码。如果您有任何不明白的地方,请告诉我。

#include<stdio.h>
#include<stdlib.h>

char* delChar(char *str, char replace_char)
{
  char *newStr;
  int i=0, * flag;
  newStr= (char*)malloc(1*sizeof(char)); 
  if (newStr == NULL)
  {
   printf("Out of memory ...!");
   exit(-1);
  }
  while (*str != '\0' )
  {
    if (*str != replace_char)
    {
        newStr[i]= *str;
        ++i;
        flag= realloc(newStr,i*sizeof(char));

        if (flag == NULL)
        {
          printf("Out of memory ...!");
          exit(-1);
        }
    }
      str= str+1; 
  }

 return newStr;
}


int main()
{
    char *str = "#-#9#66#";
    char* newStr;
    newStr= delChar(str, '#');

    printf("%d\n", atoi(newStr)); // use atoi() to convert string to integer

  return 0;
}

输出: -966

关于C 如何从字符串中删除一个字符并保留其余字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788336/

相关文章:

c - mcu UART,从传感器(rx 引脚)读取串行数据并在 PC 上显示(Tx 引脚)

c - 让字符超过 C 文件中的某个点

c - 转换时截断结果不同

c - 为什么在C中初始化数组时数组内的桶有随机值

c - 如何尽可能调整函数的返回值(在 AS3 和 C 中)

c - 定位头文件的规则

c - 将 arr[ ] 和 *arr 作为函数原型(prototype)中的参数在所有意义上都等效吗?

c - 通过 FFI 在 C 和 Haskell 之间传递类结构数据

c - 为什么以及如何在 C 语言中从 -52 开始未初始化的字符?

c - 通过 C 中的套接字与服务器的多个连接