在C中:如何打印函数参数

时间:2018-11-11 08:37:44

标签: c

我想在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);
}

2 个答案:

答案 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");
    }

even better

  

如果字符串以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);