首页 > 解决方案 > 字符串变量赋值给出指针错误

问题描述

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]

标签: ccs50

解决方案


错误消息是不言自明的。

printf()返回一个int,您不能将其分配给 类型的变量char*

也就是说,您还有其他多个问题:

  • return 语句使用了一个块作用域变量,它超出了它的作用域。
  • return 语句缺少;- 语法错误。

要修复代码,您需要做的是:

  • 分配一个足够长的缓冲区来保存最终输出。(定义一个指针并使用malloc()足够大小的或系列分配的内存)
  • 使用sprintf()您需要的输出填充内存。
  • 返回指针。
  • 一旦你完成使用它,free()返回的指针。

推荐阅读