簡體   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