[-Wformat-overflow=]

Fórumok

Arra szeretném rávenni a programot, hogy tegyen be egy stringbe egy 2 hosszú, előnullázott számot. Tudok róla, hogy a végére odapöttyint egy '\0'-át és fel is használom ezt a dolgot a továbbiakban.

A fordító dobja nekem ezt a warningot, mondja is milyen flaggel tudom ezt felülírni, de én szeretném megtartani a -Wall ficsört, mert ezt olyan megnyugtató. Meg lehet ezt a problémát kerülni valahogyan?

/meditor/2010/include/meditor.c:158:25: warning: '%02d' directive writing between 2 and 11 bytes into a region of size 10 [-Wformat-overflow=]

sprintf(ShortDateStr,"%02d",DaTi->tm_year-100);sprintf(&ShortDateStr[3],"%02d",DaTi->tm_mon+1);sprintf(&ShortDateStr[6],"%02d",DaTi->tm_mday);

Köszi a válaszokat előre is.

Hozzászólások

A gcc szerint lehet, hogy az eredmeny nem fer be a 10 byte-os teruletre.

- hasznalj

snprintf

-t (amugy is ajanlott)
- probalj

short int

formatumot adni az

sprintf

-nek (

%02hd

)
- noveld meg a puffert, amibe irsz.

Disclaimer: nem probaltam ki.


nyos@hex:~$ gcc src/02d.c
nyos@hex:~$ ./a.out
9999
nyos@hex:~$ cat src/02d.c
#include <stdio.h>

int main()
{
  printf("%02d\n",9999);
}

Ha valaminek a _minimalis_ hossza 2, attol meg lehet 10 hosszu.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Nincs gond, nagyjából értem én, arra nézvést kapok figyelmeztetést, hogy nem biztos az a 2 karakter hosszúság. Eddig ez a hibaüzenet nem volt, az új gcc dobja.

Különösebben nem látom ennek a warning-nak az értelmét, mert el tudom dönteni, hogy elég-e 2 hely vagy nem. Letiltottam egy =0 értékkel, kompatibilitási szempontból jobb lenne, ha ez lenne a default érték.

> Sol omnibus lucet.