我想在printf命令中打印函数参数。请帮忙提出建议。
void printline(char ch, int len);
value(float, float, int);
main()
{
double amount;
printline('=', 30);
amount = value(500, 0.12, 5); // I want to print argument of function value. please help
printf("The total amount is: %f \n", amount);
//printf("%f\t%f\t%d\t%f \n", 500, 0.12, 5, amount);
printline('=', 30);
_getch();
}
void printline(char ch, int len)
{
int i;
for (i = 0; i < len; i++)
printf("%c", ch);
printf("\n");
}
value(float p, float r, int n)
{
int year;
float sum;
sum = p;
year = 1;
while (year <= 5)
{
sum = sum * (1 + r);
year = year + 1;
}
return(sum);
}
答案 0 :(得分:1)
在printline
函数中,只有一个字符作为参数。因此,遍历它没有任何目的。如果要打印string
或字符数组,则要使用char *
或char[]
并对其进行迭代。因此您的函数printline
可能如下所示:
void printline(char *ch, int len)
{
int i;
for (i = 0; i<len; i++)
printf("%c", ch[i]);
printf("\n");
}
只需确保len
的长度不超过*ch
的长度。
甚至更好的解决方案是,不必担心len
的值是逐个打印字符,直到遇到\0
字符,表示数组的末尾。
void printline(char *ch)
{
int i;
for (i = 0; ch[i] != '\0'; ++i)
printf("%c", ch[i]);
printf("\n");
}
如果字符串以null结尾,请使用
printf("%s", ch)
。如果字符串不是以null结尾的字符串,而是提供了长度,请使用printf("%.*s", len, ch)
。在两种情况下,用户代码中都没有循环。循环被埋在printf()
函数内部。此外,由于循环后会打印换行符,因此请使用printf("%s\n", ch)
或printf("%.*s\n", len, ch)
并在循环后跳过多余的printf()
。
答案 1 :(得分:0)
value(500, 0.12, 5); // I want to print argument of function value. please help
您可以在函数的开头添加一个printf:
value(float p, float r, int n)
{
printf("%s(%f, %f, %d)\n", __func__, f, r, n);