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 11:53:52 浏览: 219
这个错误是因为你在使用 `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=] scanf("%d",age);
这个错误提示的意思是,`scanf` 函数中使用了 `%d` 格式化符号,期望的是 `int *` 类型的指针作为参数,但是传入了一个 `int` 类型的变量作为参数。正确的用法应该是将变量的地址作为参数传递给 `scanf` 函数,例如:
```
int age;
scanf("%d", &age);
```
这样就可以正确地将输入的整数保存到 `age` 变量中了。
warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]这种报错如何处理
这个警告是在编译时出现的,表示你在使用`printf`或其他类似函数时,试图将一个整数类型(`int`)作为 `%d` 格式说明符所期望的指针类型(`int *`)传递。这通常是由于错误地直接将数值而不是它的地址赋值给格式化字符串。
要解决这个问题,你需要做的是:
1. **检查传参**:确保你提供给`printf`的是一个整数变量的地址,而非其实际值。如果想要打印变量本身,应该取地址(&variable)。
```c
int num = 5;
printf("%d", &num); // 正确的方式,传入的是num的地址
```
2. **使用指针**:如果你想通过指针引用并打印整数值,需要先声明一个指向该整数的指针,然后传入该指针。
```c
int num = 5;
int *p = # // 创建一个指向num的指针
printf("%d", *p); // 使用*运算符访问指针的内容
```
3. **忽略警告**:如果你确定不会引发运行时错误,可以暂时忽略这个警告,但在生产代码中最好修复它,以免引入潜在的问题。
记得编译器的警告是为了帮助开发者避免常见错误,所以尽早修复总是好的。
阅读全文