我将printf和/或其他函数应用于某个字符串,从文件中读取。我想在某些条件下跳过前5个字符。现在我觉得很聪明,如果条件适用,将字符串指针增加5:
if (strlen(nav_code) == 10 ) {nav_code = 5+nav_code;}
但是编译器拒绝这个:
错误:赋值给具有数组类型的表达式
我误解了什么?如何让我的想法发挥作用 - 或者无论如何这是一个坏主意?
答案 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
是一个数组,无法分配数组。
相反,使用指针,使用数组的第一个元素的地址初始化指针,对该指针进行指针运算并将更新的结果存储回指针。