仅打印字符串的最右边部分

时间:2017-01-19 07:29:20

标签: c string

我将printf和/或其他函数应用于某个字符串,从文件中读取。我想在某些条件下跳过前5个字符。现在我觉得很聪明,如果条件适用,将字符串指针增加5:

 if (strlen(nav_code) == 10 ) {nav_code = 5+nav_code;}

但是编译器拒绝这个:

  

错误:赋值给具有数组类型的表达式

我误解了什么?如何让我的想法发挥作用 - 或者无论如何这是一个坏主意?

3 个答案:

答案 0 :(得分:6)

这可能是因为nav_code不是指针而是像char nav_code[50]这样的字符数组。请尝试以下方法:

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

答案 1 :(得分:1)

  

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

如果您需要printf,那么请确保您可以跳过前5个字符。

给定nav_code是字符串(char数组或char指针),然后:

printf( "%s", nav_code + 5 );  // skip the first 5 characters

当然,您需要确保您的字符串超过5个字符,否则它会因为越界访问而变得非法。

答案 2 :(得分:0)

在您的代码中,nav_code是一个数组,无法分配数组

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