Strona 1 z 1
[C] Obsługa plików
: 23 paź 2010, 12:07
autor: tomeks91
Mam problem z poprawnym wczytaniem wektora zapisanego w pewnej formie w pliku o nazwie "plik"
Moje pytanie jeśli chce się do niego dostać i w funkcji głównej napisałem
FILE *plik = argc > 1 ? fopen( argv[1], "r") : stdin;
to jest dobrze?
Pisze polecenie ./a.out plik i nie działa tak jak powinno chociaż niby czyta, bo jak wpisuje inną nazwę pliku to wyskakuje błąd który jest opisany w funkcji głównej.
Odp: [C] Obsługa plików
: 23 paź 2010, 16:13
autor: dawwin
Wyrażenie warunkowe jest w porządku. Błąd musisz mieć w innym miejscu
Odp: [C] Obsługa plików
: 24 paź 2010, 20:31
autor: tomeks91
Nie wiem czy nie prosze o za dużo, teraz na uczelni przerabialiśmy to:
http://wikidyd.iem.pw.edu.pl/index.cgi/Jimp1/Lab/2
Zapisuje sobie plik bibl.h, bibl.c i ostatni plik main.c
Jak mam to skompilować/poprawić czy oprócz cc -Wall używać jakichś innych instrukcji do kompilowania?
Już samo bibl.c powinno być chyba skompilowane a sie nie chce.
Dodam że tym co pisze we wstępie to się nie zajmowaliśmy, mieliśmy po prostu przekopiować bibl.h i bibl.c
i zrobić włąsne main.c lub też potem popatrzyć na gotowca.
Odp: [C] Obsługa plików
: 24 paź 2010, 21:49
autor: beluosus
Piszesz tak jakbyś koniecznie nie chciał uzyskać pomocy. Nie napisałeś jak kompilujesz/jaki błąd otrzymujesz. Zakładam więc, że kompilujesz jeden plik.
viewtopic.php?t=79245 ->
http://czytelnia.ubuntu.pl/index.php/20 ... ie-ubuntu/ ->
"Chcąc skompilować program składający się z kilku plików źródłowych ..."
Na stronie, którą podałeś też jest polecenie w jaki sposób kompilować:
Odp: [C] Obsługa plików
: 24 paź 2010, 22:38
autor: tomeks91
Jak kompiluje w ten sposób ukazuje sie ten błąd:
/usr/lib/crt1.o(.text+0x7f): In function `_start':
: undefined reference to `main'
My używamy vima, ale to chyba bez znaczenia.
PS. Będę wdzięczny za każdą pomoc.
Odp: [C] Obsługa plików
: 24 paź 2010, 23:29
autor: Hauleth
nie linkujesz pliku z funkcją main()
Odp: [C] Obsługa plików
: 25 paź 2010, 15:21
autor: tomeks91
Dopisałem #include "zwykladu.c"
i oto błędy:
cc: test.c: No such file or directory
In file included from bibl.c:2:
zwykladu.c:1:21: error: stdio.h : No such file or directory
zwykladu.c:5:21: error: calling fdopen: Bad file descriptor
In file included from bibl.c:2:
zwykladu.c: In function 'main':
zwykladu.c:29: warning: implicit declaration of function 'exit'
zwykladu.c:29: warning: incompatible implicit declaration of built-in function 'exit'
EDIT:
Teraz zamiat test.c wpisuje zwykladu.c czyli plik z funkcją main
Poprawiłem exit tzn. zamieniłem na return i są tylko takie błędy
volt% cc -Wall -o zwykladu.c bibl.c -lm /* tak kompiluje*/
In file included from bibl.c:2:
zwykladu.c:1:21: error: stdio.h : No such file or directory
zwykladu.c:5:21: error: calling fdopen: Bad file descriptor
Odp: [C] Obsługa plików
: 25 paź 2010, 16:05
autor: kabanek
mi się kompiluje i wychodzi coś takiego (załącznik)
Odp: [C] Obsługa plików
: 25 paź 2010, 23:10
autor: tomeks91
Ja to zrobiłem tak: kopiuje pierwszy kod zapisuje jako bibl.h
drugi jako bibl.c
trzeci jako test.c
i kompiluje w ten sposób
cc -Wall -o t1 test.c bibl.c -lm
Pewnie coś robię źle ale nie wiem co.
Teraz wyskakuje
volt% cc -Wall -o t1 test.c bibl.c -lm
test.c:1:21: error: stdio.h : No such file or directory
test.c: In function 'main':
test.c:29: warning: implicit declaration of function 'exit'
test.c:29: warning: incompatible implicit declaration of built-in function 'exit'
EDIT:
Coś jest nie tak, kompiluje w putty i nawet przy prostych programikach nie mam dostępu do bibliotek stdlib.h stdio.h
Kompiluje sobie:
nowy.c:1:20: error: stdio.h: No such file or directory
nowy.c:2:21: error: stdlib.h : No such file or directory
Ale chyba zawsze kompilowałem w puttym i było ok sprawdze jeszcze w terminalu ubuntu.
EDIT:
Na szczęście już wszystko gra po prostu przy kopiowaniu jakoś się tak to robiło że format tekstu czy coś się nie zgadzało.
Nadal jednak wyświetlały się błędy z exit, którego zmieniłem na return 1 i gra.