format ‘%d’ expects argument of type ‘int*’, but argument 3 has type ‘char*’ [-Wformat=] sscanf(temp.c_str(), "%d", &data_conv[i]);
时间: 2024-03-01 17:53:52 浏览: 104
这个错误是因为你在使用 `sscanf()` 函数时,第三个参数传入了一个 `char*` 类型的变量,而 `sscanf()` 函数期望的是一个 `int*` 类型的变量。
要解决这个错误,你需要检查传入 `sscanf()` 函数的参数类型是否正确。如果你传入的是一个 `char*` 类型的变量,那么你需要将它转换为 `int*` 类型的变量,例如:
```c
char temp[] = "123";
int data;
sscanf(temp, "%d", &data);
```
在这个例子中,我们将 `temp` 字符串转换为 `int` 类型的变量 `data`。注意,在传入 `sscanf()` 函数时,我们使用 `&` 取得 `data` 变量的地址,以便 `sscanf()` 函数能够将转换后的值存储到 `data` 变量中。
相关问题
format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
这个错误是因为你使用了错误的格式化说明符。`%d` 是用于格式化整数的,但是你传递了一个指向整数的指针,导致编译器报错。
例如,下面的代码会产生这个错误:
```
int *p = malloc(sizeof(int));
scanf("%d", p); // 这里会产生上述错误
```
要解决这个问题,你需要使用 `%p` 格式化说明符,并将指针作为参数传递给 `printf` 函数,例如:
```
int *p = malloc(sizeof(int));
scanf("%d", p);
printf("The value of p is %p\n", (void *)p);
```
注意,在使用 `%p` 格式化说明符时,要将指针强制转换为 `void *` 类型。
format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
这个错误提醒是因为你在使用 printf 函数的时候,使用了 %s 格式符指定了一个字符串类型的参数,但是实际传入的参数却是一个 int 类型的变量,导致类型不匹配。
示例代码:
```c
int num = 100;
printf("The number is: %s", num); // 错误示例,应该使用 %d 格式符
```
解决方法是将 %s 改为 %d,因为 %d 是用来输出整数类型的格式符。
修改后的代码如下:
```c
int num = 100;
printf("The number is: %d", num); // 正确示例
```