NOTICE_TYPE cust_sw_rev[100] = ""; char *substr = "-NETRANI_GENALL_PACK"; // 需要删除的子串 strcpy(cust_sw_rev, mob_sw_rev); // 找到NETRANI_GENALL_PACK的位置 char* p = strstr(cust_sw_rev, substr); if (p!= NULL) { // 将NETRANI_GENALL_PACK及其后面的值删除 memmove(p, p + strlen(substr), strlen(p + strlen(substr)) + 1); // 删除子串 } 修改上述代码,编译报错,报错信息为error: passing 'const char [100]' to parameter of type 'char *' discards qualifiers
时间: 2024-02-22 20:58:31 浏览: 87
这个错误是因为 substr 变量被声明为 char* 类型,而参数类型是 const char* 类型,这两种类型是不兼容的。如果你想要传递 const char* 类型的参数,需要将 substr 变量的类型也改为 const char*。
下面是修改后的代码:
```
NOTICE_TYPE cust_sw_rev[100] = "";
const char *substr = "-NETRANI_GENALL_PACK"; // 需要删除的子串
strcpy(cust_sw_rev, mob_sw_rev);
// 找到NETRANI_GENALL_PACK的位置
char* p = strstr(cust_sw_rev, substr);
if (p != NULL) {
// 将NETRANI_GENALL_PACK及其后面的值删除
memmove(p, p + strlen(substr), strlen(p + strlen(substr)) + 1); // 删除子串
}
```
这样就可以避免编译错误了。
相关问题
NOTICE_TYPE cust_sw_rev[100] = ""; const char *substr = "-NETRANI_GENALL_PACK"; // 需要删除的子串 strcpy(cust_sw_rev, mob_sw_rev); char* p = strstr(cust_sw_rev, substr); if (p!= NULL) { memmove(p, p + strlen(substr), strlen(p + strlen(substr)) + 1); // 删除子串 } 发生保错,报错原因如下: error: passing 'const char [100]' to parameter of type 'char *' discards qualifiers
这个错误是因为你尝试修改了一个被声明为 `const` 的变量。在这个例子中,`substr` 被声明为 `const char *`,意味着它是一个指向常量字符的指针,不能被修改。而在 `memmove` 函数中,你将 `p` 指向的内存区域中的子串删除,这个内存区域实际上是 `cust_sw_rev` 数组中的一部分,而 `cust_sw_rev` 又被声明为 `NOTICE_TYPE cust_sw_rev[100] = "";`,这意味着它是一个字符数组,并且这个数组中的所有元素都是常量。因此,你需要将 `cust_sw_rev` 声明为可修改的字符数组,例如 `char cust_sw_rev[100] = "";`,这样才能在 `memmove` 函数中正确地修改它的值。
NOTICE_TYPE cust_sw_rev[100] = ""; char substr[] = "-NETRANI_GENALL_PACK"; // 需要删除的子串 strcpy(cust_sw_rev, mob_sw_rev); char* p = strstr(cust_sw_rev, substr); if (p!= NULL) { memmove(p, p + strlen(substr), strlen(p + strlen(substr)) + 1); // 删除子串 }error: passing 'const char [100]' to parameter of type 'char *' discards qualifiers
这个错误是因为在函数调用时传递了一个 const char[] 类型的参数给了一个需要 char* 类型参数的函数。const char[] 表示该参数是一个只读的字符数组,而 char* 表示该参数是一个可读写的字符指针。由于只读的数组不能被修改,因此不能将 const char[] 类型的参数传递给需要 char* 类型参数的函数。
要解决这个错误,需要将参数的类型从 const char[] 改为 char[],或者将函数的参数类型从 char* 改为 const char*。如果你确定函数不会修改该参数,你可以将函数的参数类型改为 const char*,这样就可以接受 const char[] 类型的参数了。
阅读全文