Reputation: 21
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
}
The error is in the first if block. There are cs50 libraries involved.
error: incompatible integer to pointer conversion initializing 'string' (aka 'char *') with an expression of type 'int' [-Werror,-Wint-conversion]
Upvotes: 1
Views: 96
Reputation: 111
You can use sprintf to save the formatted data to a string. Be aware that you need a buffer big enough to save the string.
http://www.cplusplus.com/reference/cstdio/sprintf/
Upvotes: 1
Reputation: 134396
The error message is self explanatory.
printf()
returns an int
, you cannot assign it to variable of type char*
.
That said, you have multiple other issues:
;
- syntax error.To fix the code what you need to do is:
malloc()
or family, of sufficient size)sprintf()
to populate the memory with the output you need.free()
the returned pointer.Upvotes: 4