首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只打印字符串的最右边部分

只打印字符串的最右边部分
EN

Stack Overflow用户
提问于 2017-01-19 07:29:19
回答 3查看 145关注 0票数 2

我将printf和/或其他函数应用于从文件中读取的特定字符串。我想跳过前5个字符在一定条件下。现在,我认为如果条件适用,可以将字符串指针增加5,这样才是聪明的:

代码语言:javascript
运行
复制
 if (strlen(nav_code) == 10 ) {nav_code = 5+nav_code;}

但是编译器拒绝这样做:

错误:将数组类型赋值给表达式

我误解了什么?怎样才能让我的想法奏效--或者说这是个坏主意?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-19 07:33:00

这可能是因为nav_code不是一个指针,而是一个像char nav_code[50]这样的字符数组。尝试以下几点:

代码语言:javascript
运行
复制
char nav_code[50];
char *nav_code_ptr = nav_code;
if (strlen(nav_code_ptr) == 10 ) {nav_code_ptr += 5;}
// forth on, use nav_code_ptr instead of nav_code
票数 6
EN

Stack Overflow用户

发布于 2017-01-19 07:36:10

我将printf和/或其他函数应用于从文件中读取的特定字符串。我想跳过前5个字符在一定条件下。

如果printf是您所需要的,那么您可以跳过前5个字符。

如果nav_code是字符串( char数组或char指针),那么:

代码语言:javascript
运行
复制
printf( "%s", nav_code + 5 );  // skip the first 5 characters

当然,您需要确保您的字符串有超过5个字符,否则它是完全非法的,因为它的外绑定访问。

票数 1
EN

Stack Overflow用户

发布于 2017-01-19 07:31:33

在您的代码中,nav_code是一个数组,不能分配数组。

相反,使用指针,使用数组的第一个元素的地址初始化它,对该指针进行指针算法,并将更新的结果存储回指针。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41736120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档