簡體   English   中英

將結構成員輸入到 printf 函數和參數過多錯誤

[英]Inputting structure members into printf function and too many arguments error

嗨,有人可以告訴我printf函數中發生了什么問題嗎? 我不斷收到錯誤

警告:格式 '%i' 需要類型為 'int' 的參數,但參數 2 的類型為 'char *' [-Wformat=] time2.hour, time2.min, time2.sec, time3.hour, time3.min, time3 .sec);

進而

警告:格式參數過多 [-Wformat-extra-args]

有人就如何修復提供一些指示嗎? 謝謝

#include <stdio.h>

struct time
{
    int hour;
    int min;
    int sec;
};

int main (void)
{
    struct time time1, time2, time3;
    struct time elapsed_time (struct time time1, struct time time2);

    printf("Enter your first time (hh:mm:ss) : ");
    scanf ("%i:%i:%i", &time1.hour, &time1.min, &time1.sec);

    printf("Enter your second time (hh:mm:ss) : ");
    scanf ("%i:%i:%i", &time2.hour, &time2.min, &time2.sec);

    time3 = elapsed_time(time1,time2);

    printf("The time difference between %.2i:%.2i:%.2i & %.2i:%.2i:%.2i",
            "is %.2i:%.2i:%.2i.\n", time1.hour, time1.min, time1.sec,
            time2.hour, time2.min, time2.sec, time3.hour, time3.min, time3.sec);

    return 0;
}

struct time elapsed_time (struct time time1, struct time time2)
{
    struct time time3 = { 0, 0, 0 };

    time3.hour = time2.hour - time1.hour;
    time3.min = time2.min - time1.min;
    time3.sec = time2.sec - time1.sec;

    return time3;
} 

看起來你的長 printf 語句中有兩個字符串文字,但 printf 語句只允許一個字符串開頭,並且它必須是包含所有 %.2i 格式占位符的那個。

現在, printf 獲取第一個字符串,然后嘗試使用第二個字符串作為第一個字符串的輸入參數。

將這兩個字符串連接成 1 個字符串,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM