删除字符串C的第一个字符

Dac*_*cto 4 c string char gcc-warning

我试图删除字符串的第一个字符并保留其余部分,我当前的代码没有编译,我很困惑如何解决它.

我的代码:

char * newStr (char * charBuffer)
{
    int len = strlen(charBuffer);
    int i = 1;
    char v;
    if(charBuffer[0] == 'A' || charBuffer[0] == 'Q'){
        for(i=1;i<len;i++)
            v = v + charBuffer[i];
    }
    v = v + '\0';
    return v;
}
Run Code Online (Sandbox Code Playgroud)

Gcc:"警告:返回从没有强制转换的整数生成指针"

另外:"char*newStr(char*charBuffer)"需要保持不变.

Eri*_*son 7

字符串在C中不能像这样工作.您将缓冲区中的所有字符汇总到v变量中.你不能使用+来连接.您发布的代码存在一些严重问题,表明对如何使用C存在理解上的差距.

试试这个:

char *newStr (char *charBuffer) {
  int length = strlen(charBuffer);
  char *str;
  if (length <= 1) {
    str = (char *) malloc(1);
    str[0] = '\0';
  } else {
    str = (char *) malloc(length);
    strcpy(str, &charBuffer[1]);
  }
  return str;
}

或这个:

char *newStr (char *charBuffer) {
  char *str;
  if (strlen(charBuffer) == 0)
    str = charBuffer;
  else
    str = charBuffer + 1;
  return str;
}

取决于您是否要分配新字符串.您还必须添加用于处理不以"Q"或"A"开头的案例的代码.我没有包括那些,因为我不确定你在这里想要做什么.

确保你做了一些关于使用malloc和free分配和释放内存的研究.如果您要进行C编程,这些是能够使用的基本功能.