Błąd funkcji

Odpowiedz Nowy wątek
2011-08-03 22:24
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ć?


char mander; bool basaur;

Pozostało 580 znaków

2011-08-03 22:30
sig
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ł

edytowany 1x, ostatnio: sig, 2011-08-03 22:31
Zmieniłem na %c i dostałem jakieś koślawe A... czemu? - TomRiddle 2011-08-03 22:33
%c wypisze pierwszy bajt wartości 'zmienna' (czyli 8 najniższych bitów) - jak napisałem poniżej, 'zmienna' to wskaźnik na tekst "Hello world". - mnbvcX 2011-08-03 22:37
Czyli jak to powinienem napisać, żeby działało? - TomRiddle 2011-08-03 22:38

Pozostało 580 znaków

2011-08-03 22:34
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).


Not Found
The requested URL /wypasiona_sygnaturka.txt was not found in this brain.
-----
Human/1.0.00 (Earth) Server at Poland Port 65535
Czemu? I przy okazji jak to powinno prawidłowo wyglądać, żeby wyświetlić zmienną tekstową? - TomRiddle 2011-08-03 22:35

Pozostało 580 znaków

2011-08-03 22:46
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;
}

Pozostało 580 znaków

2011-08-03 22:53
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?


char mander; bool basaur;
Pokaż pozostałe 13 komentarzy
Bo tam łatwiej wysłać maila niż coś napisać. ;) - O_o 2011-08-04 15:22
Podsumowując. Gdybym chciał mieć edytor i kompilator tylko do C, ze wszystkimi bibliotekami i tym całym ustrojstwem, w jednym programie, co powinienem wybrać? - TomRiddle 2011-08-04 18:21
Code::Blocks - O_o 2011-08-04 18:27
@Edytor i kompilator to różne programy. Nigdy nie będziesz ich miał w jednym programie. Możesz mieć najwyżej IDE które wspiera kompilację i edycję C. Oto standardowe możliwości: Code::Blocks + gcc, ideone, VS C++, Pelles C, vim + gcc, emacs + gcc, gedit + gcc, notepad++ + gcc, notepad + gcc, Code::Blocks + cl, vim + cl, emacs + cl, gedit + cl, notepad++ + cl, notepad + cl, Code::Blocks+icc, vim + icc, emacs + icc, gedit + icc, notepad++ +icc, notepad+icc,vim+tcc, emacs + tcc, gedit + tcc, notepad++ + tcc, notepad + tcc,Code::Blocks+tcc. Ewentualnie coś niestandardowego. - msm 2011-08-04 18:52
Straszysz go. @Tom: Code::Blocks na standardowej instalacji i jedziesz. :) - O_o 2011-08-04 19:00

Pozostało 580 znaków

2011-08-04 18:59
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!


char mander; bool basaur;
edytowany 3x, ostatnio: TomRiddle, 2011-08-04 19:00
Witaj w prawdziwym cepie gdzie nic nie jest normalne. Używaj Build&Run, taki trybik z tym zielonym trójkątem. - O_o 2011-08-04 19:01
I nie pisz własnego pliku, nie twórz własnych plików. Utwórz nowy projekt, jako typ wybierz Console coś tam i potem zostaniesz zapytany czy chcesz C czy C++. - O_o 2011-08-04 19:02
Jak klikam ten Build&Run to nic sie nie dzieje, o_O :) - TomRiddle 2011-08-04 19:07

Pozostało 580 znaków

2011-08-04 19:12
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


char mander; bool basaur;
Otwóz Sources i tam będzie main.c - O_o 2011-08-04 19:20

Pozostało 580 znaków

2011-08-04 19:22
Kumashiro
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?

W Borland Delphi i Borland C++ Builder jakoś się działo. - TomRiddle 2011-08-04 19:24
Mamy 2011 rok, niewiem jak ty Kumashiro ale ja się spodziewam automatyzacji. :) - O_o 2011-08-04 19:28
@O_o sorry że znowu ale zrobiłem tak jak mówiłeś, i teraz klikam Build, Run, Compile i to wszystko i nic się nie dzieje. Nic też się nie uruchamia, żadna konsola. - TomRiddle 2011-08-04 19:30
O_o: automatyzacji wszystkiego? Na to sobie jeszcze poczekasz z kilkadziesiąt lat ;) - Kumashiro 2011-08-04 19:45
@Tom - witaj w świecie gdzie nic nie działa tak jak powinno ;) Z ciekawości - ściągnąłeś mniejszą czy większą wersję programu? Bo równie dobrze możesz mieć np. wersję bez kompilatora bo i taka jest udostępniana. Ogólnie spróbuj coś sam wykombinować. - msm 2011-08-04 21:05

Pozostało 580 znaków

2011-08-04 19:38
0

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


Programista uczy się całe życie....
Pokaż pozostałe 5 komentarzy
I Tak i Nie. Temat jest szeroki. - O_o 2011-08-04 20:39
@up - powiedziałbym że śliski :). Ogólnie wśród tych co znają C i C++ można wyróżnić dwie grupy - {kochają C++, pogardzają C} i {kochają C, pogardzają C++} - msm 2011-08-04 21:01
To ja należe do tej drugiej grupy, choć ekstremistą nie jestem to jak się już zniżam na ten poziom to preferuję czyste C. - O_o 2011-08-04 21:46
A ja takie małe offtop. Czemu mówicie "czyste" C, albo czysty Pascal. Tak jakby C++ skalał czymś język C. Więc się pytam: Czym Ci C++ zawinił? - TomRiddle 2011-08-04 21:48
Można by rzecz że C jest niczym miecz, piekielnie ostry, bez żadnych zdobień. C++ w tym wypadku bęzie połączeniem kosiarki do trawy z wyrzutnią pocisków nuklearnych ciągnącą za sobą dziesięc wagonów różności które mogą się kiedyś przydać. - O_o 2011-08-04 21:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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