c - 字符串变量赋值给出指针错误
问题描述
string reading_lev(int a, int b, int c)
{
float L = (a / b) * 100;
float S = (c / b) * 100;
float index = 0.0588 * L - 0.296 * S - 15.8;
if (round(index) <= 16 && round(index) >= 1)
{
string val = printf("Grade %f", index);
}
else if (round(index) > 16)
{
string val = printf("Grade 16+");
}
else
{
string val = printf("Before Grade 1");
}
return val
}
错误在第一个if块中。涉及到 cs50 库。
错误:使用“int”类型的表达式初始化“string”(又名“char *”)的不兼容整数到指针转换[-Werror,-Wint-conversion]
解决方案
错误消息是不言自明的。
printf()
返回一个int
,您不能将其分配给 类型的变量char*
。
也就是说,您还有其他多个问题:
- return 语句使用了一个块作用域变量,它超出了它的作用域。
- return 语句缺少
;
- 语法错误。
要修复代码,您需要做的是:
- 分配一个足够长的缓冲区来保存最终输出。(定义一个指针并使用
malloc()
足够大小的或系列分配的内存) - 使用
sprintf()
您需要的输出填充内存。 - 返回指针。
- 一旦你完成使用它,
free()
返回的指针。
推荐阅读
- json - 当密钥未硬编码时,JQ 过滤器返回“false”
- reactjs - 在“。”上启动 Ace Editor 自动完成功能。(反应王牌)
- elasticsearch - 如何通过 Elasticsearch-PHP 连接 tls es 堆栈
- python - 使用py2neo批量API在neo4j数据库中批量创建关系(具有多种关系类型)
- python - 分页不适用于介于两者之间的数字,也不适用于 django 中的反向
- sql - 一致的缺少右括号错误
- powershell - Powershell Invoke-CImMethod 类型不匹配
- python - 如何在python中获取和/或布尔值
- ruby-on-rails - 在 Ruby on Rails 中 - 显示 day[Sun, Mon, Tue,...] 而不是 rails 中的布尔字段 true/false