expected ‘const char *’ but argument is of type ‘int’ extern int strcmp (const char *__s1, const char *__s2
时间: 2023-09-18 18:13:36 浏览: 317
这个错误的原因是你在调用 `strcmp` 函数时,传递给它的一个参数类型是 `int`,而不是 `const char *` 类型。`strcmp` 函数的两个参数都应该是 `const char *` 类型的字符串。
你需要检查调用 `strcmp` 函数的地方,确保你传递给它的两个参数都是字符串类型。如果你传递的是整数类型的参数,你需要将其转换为字符串类型再传递给 `strcmp` 函数。
相关问题
note: expected ‘const char *’ but argument is of type ‘char’ char *mystrstr(const char* s1,const char* s2)
这个错误是因为在`main`函数中,您将`char`类型的字符串传递给了`mystrstr`函数,而`mystrstr`函数期望接收的是`const char*`类型的字符串。
为了解决这个问题,您需要将`s2`和`s3`声明为`const char*`类型的指针,而不是`char`类型的数组。
请将以下代码:
```c
char s2[] = "helloworld";
char s3[] = "ow";
```
改为:
```c
const char* s2 = "helloworld";
const char* s3 = "ow";
```
这样就能够解决这个问题。修正后的代码如下:
```c
#include<stdio.h>
#include<string.h>
char *mystrstr(const char* s1, const char* s2)
{
int i = 0, a = 0, c = 0;
int d = strlen(s2);
while (s1[i] != '\0' && a <= d - 1)
{
c = i;
while (s1[i] == s2[a])
{
i++;
a++;
}
if (s2[a] == '\0')
{
return (char*)(s1 + c);
}
i = c;
i++;
}
return NULL;
}
int main()
{
const char* s2 = "helloworld";
const char* s3 = "ow";
printf("%s\n", mystrstr(s2, s3));
return 0;
}
```
现在代码应该能够正确编译和运行了。
expected ‘char *’ but argument is of type ‘char (*)[10]’ int gpio_set_direction(int gpio, char* direction_type)
这个问题是一个参数类型不匹配错误,它表示你传递给函数的参数类型与函数定义中的参数类型不一致。具体来说,你传递给 `gpio_set_direction()` 函数的第二个参数是一个字符数组,而函数定义中的第二个参数是一个字符指针。
在 C 语言中,字符数组和字符指针虽然都可以表示字符串,但它们的类型是不同的。字符指针是一个指向字符数组的指针,它存储的是字符数组的首地址。而字符数组是一种固定长度的字符序列,它在定义时需要指定长度,如 `char direction_set[10];`。
解决这个问题的方法是,将字符数组转换为字符指针。可以使用字符数组的名称来获取字符数组的地址,然后将其强制转换为字符指针类型,如下所示:
```c
int gpio = 1;
char direction_set[10] = "out";
gpio_set_direction(gpio, (char*) direction_set);
```
需要注意的是,在进行类型转换时需要谨慎,确保转换后的数据类型是正确的。另外,需要确保字符数组的长度足够容纳字符串,否则可能会发生缓冲区溢出等错误。
阅读全文