bledy w kompilacji/dzialaniu programu

Te, które nie mieszczą się w powyższych kategoriach, a mają coś wspólnego ze Slackware.

Moderatorzy: Moderatorzy, Administratorzy

P!otr
Użytkownik
Posty: 34
Rejestracja: 2005-01-20, 23:20

bledy w kompilacji/dzialaniu programu

Post autor: P!otr »

Witam, mam dwa problemy:

1. Program:

Kod: Zaznacz cały

piotr:/home/piotr$ cat pr1.c 
main(){
        bool f;
}
chce go skompilowac i dostaje komunikat:

Kod: Zaznacz cały

piotr:/home/piotr$ gcc pr1.c 
pr1.c: In function `main':
pr1.c:2: error: `bool' undeclared (first use in this function)
pr1.c:2: error: (Each undeclared identifier is reported only once
pr1.c:2: error: for each function it appears in.)
pr1.c:2: error: parse error before "f"
zdaje sie, ze chyba cos skaszanilem w systemie, jak to naprawic ?

2. Progamik:

Kod: Zaznacz cały

piotr:/home/piotr$ cat pr2.cpp 
#include <stdio.h>

main(){
        char *s;
        scanf("%s", s);
}
kompiluje sie bez problemu:

Kod: Zaznacz cały

piotr:/home/piotr$ g++ pr2.cpp
ale po uruchomieniu i wpisaniu jakiegos tekstu wywala mi blad:

Kod: Zaznacz cały

Segmentation fault
wpisanie np. char s[20]; zamiast char *s; dziala bez problemu
domyslam sie, ze tu tez cos namieszalem w sysytemie, jak to wszystko naprawic, jaki skladnik systemu jest za to odpowiedzialny, a moze ja cos zle kompiluje :help:
mpier
Użytkownik
Posty: 1002
Rejestracja: 2005-10-01, 13:24
Lokalizacja: Blachownia||Cz-wa

Re: bledy w kompilacji/dzialaniu programu

Post autor: mpier »

1. Może #include <stdbool.h>?
2. Poczytaj o wskaźnikach, tworzysz jeden char *s, ale on nie wskazuje na nic, po char s[20] s jest wskaźnikiem na pierwszy element tej tablicy.
Awatar użytkownika
nOrNIc
Użytkownik
Posty: 478
Rejestracja: 2005-02-10, 00:41
Lokalizacja: Edinburgh

Re: bledy w kompilacji/dzialaniu programu

Post autor: nOrNIc »

sprobuj:

Kod: Zaznacz cały

piotr:/home/piotr$ cat pr2.cpp
#include <stdio.h>

main(){
        char *s = new char[20];
        scanf("%s", s);
        delete s;
} 
a przy okazji, dobrze napisany program w c++ powinien wygladac tak:

Kod: Zaznacz cały

#include <cstdio>
using namespace std;

void main(){
        char *s = new char[20];
        scanf("%s", s);
        delete s;
} 
lub tak

Kod: Zaznacz cały

#include <iostream>
using namespace std;

void main(){
        char *s = new char[20];
        cin>>s;
        cout<<s<<endl;
        delete s;
} 
Ostatnio zmieniony 2006-05-16, 16:17 przez nOrNIc, łącznie zmieniany 1 raz.
P!otr
Użytkownik
Posty: 34
Rejestracja: 2005-01-20, 23:20

Re: bledy w kompilacji/dzialaniu programu

Post autor: P!otr »

ok, dzieki
ODPOWIEDZ