首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C语言中切分字符串的开头

在C语言中切分字符串的开头
EN

Stack Overflow用户
提问于 2012-09-21 15:46:31
回答 2查看 2K关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void slice_first_char(char ** string)
{
    *string = &(*string[1]);
}

int main(int argc, char * argv[])
{
    char * input = "abc";
    input = &(input[1]);
    puts(input); // "bc" as expected.

    slice_first_char(&input);
    puts(input); // \372\277_\377
                 // What‘s going on?
}

如何重写slice_first_char函数以使其按预期工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 15:52:02

你把括号放在

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
&(*string[1]);

不对。我猜你的意思是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
&((*string)[1]);

您的原始版本取消引用strings数组第一个元素的指针,然后获取该元素的地址,而您实际上希望取消引用给定的指针(因为它只指向单个字符串),然后获取该指针的第一个元素(第一个字符),然后获取该元素的地址。

一种稍微不那么复杂的表达方式是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*string + 1

顺便说一下。

票数 11
EN

Stack Overflow用户

发布于 2012-09-21 15:53:35

您似乎正在尝试从字符串中删除第一个字符。所以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* remove_first_char(const char* s) {
  return (s+1);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12533830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文