繁体   English   中英

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

[英]In C: How to print function argument

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

在您的printline函数中,只有一个字符作为参数。 因此,遍历它没有任何目的。 如果要打印string或字符数组, char *使用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()

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM