Błąd funkcji

0

Nie wiem czy pisanie w języku C, w kompilatorze Borland C++ Builder było dobrym pomysłem ale trudno.
Takie coś

int main(void)
{
        int zmienna;
        zmienna = "Hello World";
        printf(zmienna);
        scanf();
        return 0;
}

wypisuje mi na ekranie "Hello World"

Ale takie cos:

int main(void)
{
        int zmienna;
        zmienna = "Hello World";
        printf("%d\n", zmienna);
        scanf();
        return 0;
}

Wyświetla cyfry 4202660.

Czemu tak się dzieje i jak temu zaradzić?

1

Zacznijmy może od tego że napisów w int-cie raczej się nie przechowuje ;) Poza tym %d odpowiada za cyfry i to właśnie dostałeś, do liter musisz dać w printf-ie %c, niezależnie od tego w jakiej formie będziesz je przechowywał

0

Co do pytania: w normalnym kompilatorze w ogóle nie powinno to zadziałać bez dokonywania typowań. zmienna dziwnym sposobem występuje jednocześnie jako typ int oraz const char* (długość wskaźnika == długość inta, więc akurat pasuje).

Ale uwaga: nigdy nie stosuje się konstrukcji printf(pewna_zmienna)! Zawsze powinno się używać printf("%s", pewna_zmienna).

0
TomRiddle napisał(a)

Czyli jak to powinienem napisać, żeby działało?

Tak:

int main(void)
{
        char* zmienna;
        zmienna = "Hello World";
        printf("%s\n",zmienna);
        scanf();
        return 0;
}
0

A powie ktoś jeszcze jak napisać w C++ Builderze aplikację konsolową??
Ja to zrobiłem tak, że po prostu otworzyłem nowy unit .C i zamknąłem ten .CPP ale to chyba nie eleganckie wyjście. I co jeszcze zrobić żeby mi postawiło exek w folderze unitu?

0

Teraz to już zbaraniałem. Ściągnąłem tego całego Code::Blocks i coś się chyba nie zgadza. Utworzyłem nowy plik file.c i napisałem taki kod

#include <stdio.h>

int main(void)
{
    printf("%s", "Hello World");
    scanf();
    return 0;
}

I kliknąłem F9. Nic się nie dzieje. Klikam ten zielony trójkąt, mówi że program nie jest zbudowany (It seems that this file has not been Build yet, do you want to build it now?)
Klikam Tak: okno znika, nic się nie dzieje
Klikam Nie: Otwiera się konsola a w niej

Process Returned 0 (0x0)    execution time: 0.002 s
Press any key to continue

HELP!

0

Ok, zrobiłem tak jak kazałeś File>>New>>Projekt>>Console>>Console Application>>GO>>(wybierz język)C>>Podaj tytuł projektu i ścieżkę>> I teraz mam puste okno?
http://i55.tinypic.com/309t0lv.jpg

0

Noż poeksperymentuj! Poklikaj! Np. rozwiń drzewo "Sources" po lewej stronie. Najpierw jednak skonfiguruj Code::Blocks, przeklikaj się przez menu, poznaj środowisko, zobacz jakie ma możliwości (jakie Ty od teraz masz możliwości). Chciałeś żeby wszystko się robiło automatycznie?

0

Eh..a nie możesz ściągnąć DevC++? Tam też można w C pisać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0