Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

DevC++ 5.11 (Windows) i gcc 5.30 (Linux) różne wyniki tego samego programu

Ostatnio zmodyfikowano 2019-02-15 00:20
Autor Wiadomość
aksen
Temat założony przez niniejszego użytkownika
DevC++ 5.11 (Windows) i gcc 5.30 (Linux) różne wyniki tego samego programu
» 2019-02-14 22:46:14
Witam

Skompilowałem taki oto prosty programik na DevC++ 5.11 pod Windowsem (używa TDM-GCC 4.9.2)


C/C++
#include <stdio.h>
#include <string.h>

int main()
{
    char tab[ 11 ] = "0123456789";
    snprintf( tab, 3, "abc" );
    printf( "%s\n", tab );
   
    return 0;
}

Uzyskałem zaskakujący dla mnie wynik:

abc3456789

(przecież snprintf powinno na końcu dopisać null)

Po skompilowaniu tego samego programu na Linuksie w gcc 5.30

otrzymałem już poprawny wynik:

ab


Poszukuje jakiegoś środowiska do pisania w C programów konsolowych (nie C++) pod Windows
ale jak widzę  Dev C++ z powodu jego błędów nie nadaje się (stary kompilator?)

Co polecacie?



PS.

Zmieniłem na najnowsze Codeblocks i jest OK.
Nowszy kompilator (a raczej biblioteka) nie ma już tego błędu.
P-173973
pekfos
» 2019-02-14 23:35:59
https://docs.microsoft.com​/pl-pl/cpp/c-runtime-library​/reference​/snprintf-snprintf-snprintf-l-​snwprintf-snwprintf-l​?view=vs-2017
The _snprintf family of functions only appends a terminating null character if the formatted string length is strictly less than count characters.
Beginning with the UCRT in Visual Studio 2015 and Windows 10, snprintf is no longer identical to _snprintf. The snprintf function behavior is now C99 standard compliant.
P-173974
aksen
Temat założony przez niniejszego użytkownika
» 2019-02-14 23:55:45
Ale nie używam tu  Visual Studio tylko DevC++ z TDM-GCC 4.9.2
P-173975
pekfos
» 2019-02-15 00:20:33
Co nie znaczy, że nie używasz bibliotek Microsoftu.
P-173976
« 1 »
  Strona 1 z 1