我试图删除字符串的第一个字符并保留其余部分,我当前的代码无法编译,我对如何修复它感到困惑。
My code:
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;
}
Gcc:“警告:返回使指针来自整数而不进行强制转换”
另外:“char * newStr (char * charBuffer)”需要保持不变。
字符串在 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;
}
or this:
char *newStr (char *charBuffer) {
char *str;
if (strlen(charBuffer) == 0)
str = charBuffer;
else
str = charBuffer + 1;
return str;
}
取决于您是否要分配新字符串。您还必须添加代码来处理不以“Q”或“A”开头的情况。我没有包括这些,因为我不确定你到底想在这里做什么。
确保您对使用 malloc 和 free 分配和释放内存进行了一些研究。如果您要进行 C 编程,这些是可以使用的基本函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)