2016-04-05 29 views
-1

Merhaba, herkes bana printf işlevinde neler olup bittiğini bildirebilir mi? Ben bir hatayı almaya devamYapı üyelerini printf işlevine girme ve çok fazla argüman hatası

uyarı: biçimi '% i 'int' türündeki argümanlar bekler, ancak argüman 2 'char *'[-Wformat =] time2.hour, time2.min yazın sahiptir, time2.sec, time3.hour, time3.min, time3.sec);

ve sonra

uyarı: çok fazla argüman formatı için [-Wformat-dışı args]

Herkes nasıl düzeltileceği konusunda bazı önerilerde? Eğer uzun printf açıklamada iki dize hazır var gibi teşekkürler

#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; 
} 
+1

İki dize değişmezinin birleştirilmesini istiyorsanız, aralarında bir ',' koymayın. – EOF

+0

Bence çok fazla ** işaretçiniz var **. Biraz daha fazla vermenize gerek yok ... – Olaf

cevap

1

görünüyor, ama printf ifadesi yalnızca başında bir dize verir ve tüm% .2i biçim tutucuları içeren biri olmalıdır.

Şuanda, printf ilkini alıyor ve sonra ikinci dizgiyi birinciye giriş argümanı olarak kullanmaya çalışıyor.

Bu iki dizeye 1 dizeye katılın ve çalışması gerekir.

+0

Teşekkürler, çok satırlı printf ifadelerini nasıl birleştirebilirim? –

+0

Sadece "," yi kaldırın ve uzun bir çizgi yapın ya da parçaları birleştirerek bir dizgiye dönüştürün. Part1 = "part 1 text" gibi; part2 = "part 2 text", vb. sonra onları strcat. Forumdaki "C'deki dizeleri nasıl birleştirebileceğinizi" inceleyin ve örnekleri göreceksiniz. – Kevin