[c][gcc] kompilacja i uruchomienie programu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Lukassz
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 05 kwie 2010, 00:03
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

[c][gcc] kompilacja i uruchomienie programu

Post autor: Lukassz »

Przepisałem z książki prosty program w C (tylko pętla for), skompilowałem go w terminalu (plik pokazał mi się na pulpicie)
gcc prog.c
potem
ls -l a.out
dostałem wynik
chcę uruchomić
./a.out
i nic nie dostaje
próbowałem na wszystkie sposoby co robić?
Awatar użytkownika
Struchu
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 116
Rejestracja: 23 mar 2008, 19:58
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Struchu »

A czy ten program coś wypisuje na konsolę w ogóle? (W sensie: czy w kodzie jest wypisywanie czegoś ;) ).
Ma zielone, kocie oczy...
Lukassz
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 05 kwie 2010, 00:03
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Lukassz »

program tak wygląda
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10;i++)
{
puts("Bla");
}
}

robiłem tak jak jest w książce
moze nie mam jakiejś biblioteki?

mam karmelowego koliberka

EDIT:
da się coś z tym zrobić??
Kokosek
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 108
Rejestracja: 04 mar 2009, 20:44
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Kokosek »

i nic nie dostaje
Powiedz coś więcej na ten temat.
Kokos - po prostu, nie zdrabniaj ;)
Lukassz
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 05 kwie 2010, 00:03
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Lukassz »

zamiast wypisania w terminalu słowa hello!! przez program nie dostaje nic
screen
http://img338.imageshack.us/img338/5249/termi.jpg
fail
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 13 mar 2010, 09:14
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: fail »

for(i=10; i>10; i++) zamień na for(i=1; i>10; i++)
Lukassz
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 05 kwie 2010, 00:03
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Lukassz »

działa kurde
dzięki ;)
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

Witam mam pytanie czy jak uruchamiam program w terminalu napisany tak jak ten wyżej w c to można go jakoś uruchomić w nowym oknie?
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: beluosus »

Można kombinować ale ogólnie/uniwersalnie - nie da rady.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

#include <stdio.h>

int main () {
double s;
double x;
do {
printf ( "%g",s);

scanf ( "%lf", &x );
x=x+s;
printf ( "= %g\n", s );
} while ( x !=0.0 ); {
printf ("Wynik ostateczny= %g\n", s );

return 0;}

Czy ktoś mógłby napisać dlaczego nie działa. s uninitialized in this function w pierwszym wierszu z printf.
To ma być prosty kalkulator ale jeszcze się nie łapę. Mieliśmy poprawić błędy.
Awatar użytkownika
JSokol
Sędziwy Jeż
Sędziwy Jeż
Posty: 67
Rejestracja: 18 mar 2010, 10:57
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Down under
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: JSokol »

tomeks91 pisze:#include <stdio.h>

int main () {
double s;
double x;
do {
printf ( "%g",s);

scanf ( "%lf", &x );
x=x+s;
printf ( "= %g\n", s );
} while ( x !=0.0 ); {
printf ("Wynik ostateczny= %g\n", s );

return 0;}
Pogrubione i wyszczególnione na czerwono otwarcie klamry generuje błędy.
Co do samego "kalkulatora" podszedłbym do niego zupełnie inaczej więc nie chcę ingerować w Twój pomysł.

Jeżeli zaś chodzi o "pierwszego printf'a", to masz tam także błąd. "%g" odnosi się do zmiennej typu float, a używasz to przy zmiennej typu double (czyli long float). Zamień więc "%g" na "%lg" lub "%lf". Analogicznie usuń ten sam błąd dalej.

Po usunięciu tego "{" i podmianiu z "%g" na "%lg" lub "%lf" daj znać co jeszcze Ci nie pasuje i będziemy myśleć :)
Awatar użytkownika
Szmitas
Zakręcona Traszka
Zakręcona Traszka
Posty: 572
Rejestracja: 28 lis 2006, 17:38
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Lokalizacja: Luboń
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Szmitas »

Chyba kompilator jasno się wyraził - zmienna 's' nie została zainicjalizowana a śmieci Ci nie wyświetli w ten sposób. Przypisz do 's' jakąś wartość i spróbuj ponownie, albo po prostu wywal printfa.
www.ubuntu-pomoc.org - tutaj znajdziesz rozwiązanie każdego Twojego problemu.

Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

Nie wiem panowie czy w ten sposób do czegoś dojdziemy, więc zamieszczam wszystko co miałęm do zrobienia:
b) uruchomienie programu kalkulatora sumującego liczby podawane
* z klawiatury (z prostymi bledami kompilacji)

1 #include <stdio.h>
2
3 main() {
4 double s;
5 double x;
6
7 do {
8 printf( "%g + ", s ); /* skasowac jeden z cudzyslowow */
9 sscanf( "%lf", &x ); /* usunac przecinek pom. argumentami */
10 s += x; /* zamienic miejscami x i s */
11 printf( "= %g\n", s ); /* zmienic printf na print */
12 } while( x != 0.0 ); /* usunac ten srednik */
13 printf( "Wynik ostateczny= %g\n", s );
14
15 retun 0;
16 }
17
Awatar użytkownika
JSokol
Sędziwy Jeż
Sędziwy Jeż
Posty: 67
Rejestracja: 18 mar 2010, 10:57
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Down under
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: JSokol »

tomeks91 pisze:Nie wiem panowie czy w ten sposób do czegoś dojdziemy, więc zamieszczam wszystko co miałęm do zrobienia:
b) uruchomienie programu kalkulatora sumującego liczby podawane
* z klawiatury (z prostymi bledami kompilacji)

1 #include <stdio.h>
2
3 main() {
4 double s;
5 double x;
6
7 do {
8 printf( "%g + ", s ); /* skasowac jeden z cudzyslowow */
9 sscanf( "%lf", &x ); /* usunac przecinek pom. argumentami */
10 s += x; /* zamienic miejscami x i s */
11 printf( "= %g\n", s ); /* zmienic printf na print */
12 } while( x != 0.0 ); /* usunac ten srednik */
13 printf( "Wynik ostateczny= %g\n", s );
14
15 retun 0;
16 }
17
Nieczytelnie i średnio poprawnie, no ale co poradzić. Żeby mocno nie ingerować w kod początkowy (bo nauczyciel może zobaczyć że z armagedonu powstało Eldorado), więc po prostu co nieco pozmieniam i wtedy daj znać czy tak może być:

Kod: Zaznacz cały

#include <stdio.h>

int main()
{

double s=0;
double x;

    do{
        printf("%lf + ", s);
        scanf("%lf", &x);

        s+=x;

        printf(" = %lf\n", s);
    } while(x!=0.0);

printf("Wynik ostateczny = %lf\n", s);

return 0;
}
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

No więc tak jak to na studiach wszystkiego trzeba dowiedzieć się samemu, a ten przykład jest do "przemyślenia". Czy możesz mi jeszcze wyjaśnić o co chodzi z tym średnikiem po while, bo nauczyciel widocznie nie chce by on tam był, czemu wyskakuje błąd jak go tam nie ma.
Według składni while z książek nie powinno go tam być[edit]
Awatar użytkownika
Szmitas
Zakręcona Traszka
Zakręcona Traszka
Posty: 572
Rejestracja: 28 lis 2006, 17:38
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Lokalizacja: Luboń
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Szmitas »

To nie jest pętla while, tylko do ... while - poczytaj o tym.
www.ubuntu-pomoc.org - tutaj znajdziesz rozwiązanie każdego Twojego problemu.

Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

Znów mam kłopot chodzi mi o funkcję z "Język Ansi C" z programu, z rozdziału Tablice znakowe.
Dokładniej jest to funkcja copy:
void copy(char to[], char from[])
{
int i;

i=0;
while((to = from[1] != '\0')
++i;
}

Chodzi mi o to że ta funkcja ma zamieniać wszystkie znaki z tablicy to na te z from (dobrze myśle?) No więc nie rozumiem jak ona to robi skoro jedyną instrukcją jest zwiększanie indeksu c, a moim zdaniem powinno wykonać się coś takiego co jest w nawiasach okrągłych. Jeśli trzeba to mogę napisać cały program, tylko trochę dużo przepisywania dlatego podałem źródło a jest to chyba biblia c jak się zdołałem zorientować.
Awatar użytkownika
Szmitas
Zakręcona Traszka
Zakręcona Traszka
Posty: 572
Rejestracja: 28 lis 2006, 17:38
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Lokalizacja: Luboń
Kontakt:

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: Szmitas »

Na pewno dobrze to przepisałeś? Bo ja widzę błąd:

Kod: Zaznacz cały

while((to[i] = from[1] != '\0')
www.ubuntu-pomoc.org - tutaj znajdziesz rozwiązanie każdego Twojego problemu.

Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
tomeks91
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 07 paź 2010, 21:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: tomeks91 »

Nie no oczywiście że i. Ale to po prostu błąd w przepisywaniu. Nadal nie rozumiem tego co wymieniłem wyżej.
kklimonda
Zakręcona Traszka
Zakręcona Traszka
Posty: 585
Rejestracja: 20 kwie 2008, 04:21
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME

Odp: [c][gcc] kompilacja i uruchomienie programu

Post autor: kklimonda »

Kod: Zaznacz cały

while((to[i] = from[1]) != '\0')
Po pierwsze nie 1 a i, po drugie wcieło ci nawias. A działa to w ten sposób, że jako argument dla while podane jest

Kod: Zaznacz cały

(to[i] = from[i]) == '\0'
co oznacza:
1. skopiuj do to wartość z from
2. porównaj to z NULL ('\0' to NULL) i jeżeli są sobie równe to zakończ pętlę.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości