我将printf和/或其他函数应用于从文件中读取的特定字符串。我想跳过前5个字符在一定条件下。现在,我认为如果条件适用,可以将字符串指针增加5,这样才是聪明的:
if (strlen(nav_code) == 10 ) {nav_code = 5+nav_code;}但是编译器拒绝这样做:
错误:将数组类型赋值给表达式
我误解了什么?怎样才能让我的想法奏效--或者说这是个坏主意?
发布于 2017-01-19 07:33:00
这可能是因为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发布于 2017-01-19 07:36:10
我将printf和/或其他函数应用于从文件中读取的特定字符串。我想跳过前5个字符在一定条件下。
如果printf是您所需要的,那么您可以跳过前5个字符。
如果nav_code是字符串( char数组或char指针),那么:
printf( "%s", nav_code + 5 ); // skip the first 5 characters当然,您需要确保您的字符串有超过5个字符,否则它是完全非法的,因为它的外绑定访问。
发布于 2017-01-19 07:31:33
在您的代码中,nav_code是一个数组,不能分配数组。
相反,使用指针,使用数组的第一个元素的地址初始化它,对该指针进行指针算法,并将更新的结果存储回指针。
https://stackoverflow.com/questions/41736120
复制相似问题