Widzisz odpowiedzi znalezione dla zapytania: pierwszy znak
Temat: Powtorzenie dywizu/polpauzy. Dzielenie wyrazow z przypisami. [InD] HELP NEEDED
:: Maciej Haudek wrote ::
| Czy ktoś wie od czego działanie (a dokładnie niedziałanie) tego ficzera
| zależy? Może o czymś zapomniałem? Bo zaczyna to być mocno irytujące.
To pytanie jest bardzo ważne i dziwię się, że nikogo to nie
zainteresowało...
No właśnie...
;-)
Ten "ficzer" działa wtedy, gdy spełnione są dwa warunki:
1) włączone jest dzielenie wyrazów,
2) dla dywizów: przynajmniej pierwszy znak n-członowego wyrazu musi mieć
przypisany język Polski (oczywiście w normalnych warunkach cały akapit ma
ten język przypisany);
dla półpaz: oprócz pierwszego znaku n-członowego wyrazu, także pierwszy
znak akapitu musi mieć przypisany język Polski.
Nie mogę teraz sprawdzić, ale jestem niemal pewien (przy czym kluczowe
jet tu słowo "niemal"), że oba te warunki były spełnione we wszystkich
przypadkach, które InD traktował jednak różnie.
Sprwadzę to dziś lub jutro wieczór i napiszę konkret. Mam nadzieję, że
Maciej Haudek ma rację, a ja coś przeoczyłem, bo zaoszczędziłoby mi to
wiele nerwów ;)
Lukas
Temat: Powtorzenie dywizu/polpauzy. Dzielenie wyrazow z przypisami. [InD] HELP NEEDED
:: Lukas aka Noe Noel wrote ::
Pozwalam sobie powrócić do tej dość istotnej (przynajmniej dla mnie w
tej chwili ;) ) kwestii. Otóż:
:: Maciej Haudek wrote ::
| Ten "ficzer" działa wtedy, gdy spełnione są dwa warunki:
| 1) włączone jest dzielenie wyrazów,
| 2) dla dywizów: przynajmniej pierwszy znak n-członowego wyrazu musi mieć
| przypisany język Polski (oczywiście w normalnych warunkach cały akapit ma
| ten język przypisany);
| dla półpaz: oprócz pierwszego znaku n-członowego wyrazu, także pierwszy
| znak akapitu musi mieć przypisany język Polski.
Tak to właśnie działa i na szczęście (dla mnie ;) ) to ja przeoczyłem
parę rzeczy - np. wyłączone dzielenie.
Przy okazji pytanie - czy w innych językach nie powtarza się półpauzy w
sytuacji gdy na końcu linijki zostaje nam część zakresu, np. 1980-
-1990?
Czyli byłoby to 1980-
1990?
Dziwnie mi to wygląda...
Lukas
Temat: style z grafika + OT pt. za ile?
kombinuje, kombinuje i nic nie wykombinowalem, wiec moze mnie ktos
oswieci :) mam juz wszystko pieknie ostylowane pozostaje mi jedynie
jeden taki problemik - potrzebuje uzyskac takie formatowanie:
http://kreatyw.net/dtp/paragraf.jpg
pierwszy znak jako inicjal przekresleniem
plus linia akapitowa ponad
robin
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: style z grafika + OT pt. za ile?
| kombinuje, kombinuje i nic nie wykombinowalem, wiec moze mnie ktos
| oswieci :) mam juz wszystko pieknie ostylowane pozostaje mi jedynie
| jeden taki problemik - potrzebuje uzyskac takie formatowanie:
| http://kreatyw.net/dtp/paragraf.jpg
pierwszy znak jako inicjal przekresleniem
plus linia akapitowa ponad
troche chyba sie pospieszylem ...
ten znak paragrafu bedzie chyba za duzy ... chyba ze jakos sztucznie sie go
zmneijszy w glifach w foncie ...
chyba ze ... wstawiasz tam ramke i w niej znaczek ;)
robin
Temat: Łamanie / Bez łamania w PageMaker 6.5PL
W artykule <9mdgiu$q3@news.tpi.pl
Robert Ole napisal(a):
Kiedys wlasnie z tego powodu definitywnie zrezygnowalem z lamania ksiazke w PM
automatyczne usuwanie zawieszek w rtf'ach przez wstawianie twardej spacji
dawalo wlasnie ten nieporzadany efekt.
To może być widoczne przy b. krótkich wierszach (skład gazetowy, ew.
oblewanie ilustracji) - przy "normalnej" szerokości łamu chyba nie...
Swoją drogą, marzy mi się makro, które by robiło coś akiego:
- Wyszukujemy sekwencję <spacja[x]<spacja- gdzie [x] to dowolny wyraz
jednoliterowy.
- Zaznaczamy (select) sekwencję [x]<spacja[y] - gdzie [x] to poprzednio
znaleziona litera, a [y] - pierwszy znak następnego wyrazu
- Dla zaznaczonego kawałka wstawiamy atrybut "No break" (Bez łamania) -
oczywiście w w PM...
No i tak dalej do końca wątku. Albo i po wszystkich wątkach...
Ostatecznie mógłby być to dziewięć razy wywołany ten sam skrypt dla
kolejnych literek - choć wolałbym, żeby np. pojedyncze cyfry też
łapał...
A da sie jakos wstawic "nobrak" z Worda, tak aby PM potrakotwal importowanego
rtf'a z takim wlasnie zapisem, o ktorym piszesz?
Przecież "nobreak" (CTRL-SHIFT-spacja) w Wordzie to jest właśnie
twarda spacja (inaczej kodowana, ale co za różnica)?
Pozdrawiam,
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: indesign i numeracja stron
nie mam teraz jak tego "odtworzyc" ale dalej nie lapie co uzyskasz
- ustawiam rozpoczęcie numeracji od 1001
- na wzorcowej w pierwszej ramce wstawiam APN
- drugą ramką (bez wypełnienia/konturu) obejmuję trzy ostatnie cyfry
- pierwszą ramkę Paset Into drugą ;)
co rozumiesz przez pojecie "obejmuje trzy ostatnie cyfry" ??
a to, ze AutoPageNumber to jeden znak - dla mnie to zaden problem ;)
uzasadnij, kiedy lepiej by bylo gdyby byl rozbijany na kawalki ;)
Nadaję styl akapitowy dla APN, w stylu definiuję inicjał (1 znak) i
określam dla niego styl znakowy w którym Character Color = None. TYm
sposobem pozbyłby się pierwszej jedynki z 1001, 1002 ... i nie byłbym
ograniczony do fontów o stałej szerokości znaku. Tak sobie
kombinuję...
skoro ten pierwszy znak ma byc niewidoczny - ZAWSZE niewidoczny - to po grzyba go w ogole tam wstawiac ?? :)
a poza tym - InDesign w wersji EN/CE jest od-lewej-do-prawej ;) wiec nadmiar znakow - APN - zniknie i pojawi sie czerwony plusik ;) wiec wypychanie w lewo nie przejdzie ;)
robin
Temat: indesign i numeracja stron
nie mam teraz jak tego "odtworzyc" ale dalej nie lapie co uzyskasz
skoro ten pierwszy znak ma byc niewidoczny - ZAWSZE niewidoczny - to po
grzyba go w ogole tam wstawiac ?? :)
po to żeby ustawić stronicowanie sekcji od 1001 a dzięki temu uzyska 001
że też sam wcześniej na to nie wpadłem... :) też stosowałem 000A
Piotr
Temat: paragraph style + character style = error
W artykule <xn0e23h10pslj7005_my@127.0.0.1
Myjk napisał(a):
Marek Włodarz napisać:
| Jeśli masz tam zadany styl znakowy, zmieniający kolor
| - no to bierze ten kolor - logiczne i zgodne z oczekiwaniem
Właśnie nie dla mnie. Dlaczego jeśli jest to ostatni znak w lini
to zmienia _cały_ _paragraf_, a jeśli nie jest ostatnim znakiem,
Nie cały. Linię pod.
to nie zmienia? Przecież to styl znakowy, to dlaczego ma wpływ
na cały paragraf?
Patrz wyżej. Skądś Indi musi przeczytać ten atrybut, co nie? Podałeś
mu "text color". Nie "Paragraf defined text color", ale właśnie _kolor_
_tekstu_. No to próbuje odczytać.
Że z ostatniego znaku? A dlaczego nie? Któryś musieli wybrać do
sprawdzenia, a ten jest logiczny - bardziej logiczny, niż pierwszy -
bo dla pierwszego znaku często spotyka się różne "udziwnienia"
(inicjały itp.).
IMHO się czepiasz :
Pozdrawiam,
Marek W.
Temat: paragraph style + character style = error
Marek Włodarz napisać:
Myjk, kpisz, czy o drogę pytasz? Przecież ta linia to jest jeden
atrybut akapitu. Chcesz, żeby co, zmieniała kolor co znak?
Nie! Chcę żeby w ogóle się nie zmieniała!
Bo wg mnie _nie_ _powinna_ w żadnym wypadku tego robić.
Ale zadałeś mu "text color" - to odczytuje z tekstu,
do jasnej anielki...
No i dobrze, tylko dlaczego Styl znakowy
podmienia kolor _Paragraph_ _rule_ ?
I logiczne, że ostatni znak, bo to "rule below".
Czyli pod. Ergo - PO akapicie. Dla "Rule above"
czyta kolor z pierwszego znaku. Jasne?
Tak, teraz już rozumiem zasadę działania.
Dzięki za oświecenie. Ciężko było, ale się udało. ;]
Jak dla mnie - jest to logiczne,
prawidłowe i tak właśnie powinno być.
A dla mnie wręcz przeciwnie. Styl znakowy służy (chyba)
do wyróżniania tylko pewnych fragmentów tekstu i nie
powinien mieć wpływu na ustawienia stylu _akapitowego_.
Dla mnie jest to więc błąd, który dorabia mi nieco pracy.
Przeglądaj wszystkie wypowiedzi z tego tematu
Temat: nadawanie tekstowi styki skryptem w PM (?)
Witam,
Do fachowcow od skryptow i PM - a najlepiej fachowcow od skryptow w PM :-)
mam nastepujace pytanie: czy da sie i jesli tak to jak napisac skrypcik
ktory nadaje danemu akapitowi odpowiedni styl w zaleznosci od tego jaki jest
pierwszy znak akapitu. Kwestia jest w "ostylowaniu" tesktu, ktory jest tylko
i wylacznie wielopoziomowa lista. A wiec chodzi o zastosowanie odpowiedniego
stylu dla akapitów zaczynajacych sie od:
A. duzych liter
I. cyfr arabskich
1. cyfr rzymskich
a. liter malych
- (pauz)
Jesli ktos ma jakis pomysl to bardzo prosze. Jesli jest to mozliwe to
ewentualnie o fragment skryptu (np. na jeden z tych przykladow), bo ja w
skryptach z kolei mam troszke mniejsze doswiadczenie ;-).
Pozdrawiam, z gory dziekuje
.../:::T:::...
Temat: nadawanie tekstowi styki skryptem w PM (?)
Do fachowcow od skryptow i PM - a najlepiej fachowcow od skryptow w PM
:-)
mam nastepujace pytanie: czy da sie i jesli tak to jak napisac
skrypcik
ktory nadaje danemu akapitowi odpowiedni styl w zaleznosci od tego
jaki jest
pierwszy znak akapitu.
Myślę, że najłatwiej osiągniesz to edytując tekst wejściowy (nie wiem
skąd go masz) tak, by zawierał tagi PageMakera.
Operacja jest dość prosta i nie powinna przysporzyć wielu problemów.
Wyeksportuj sobie jakiś tekst z zastosowanymi stylami z PMa na tekst z
tagami - zobaczysz jak to działa.
Pozdrowienia
Mateus Joschko
Temat: PM 6,5 inicjał wpuszczany
Chcę zrobić inicjał wpuszczany. Wstawiam kursor w danym akapicie
Narzedzia-.inicjał-nadaj. I tu czasem jest Ok , ale częśćiej mam taki
komunikat : Błąd rozszerzeń. Nie można wykonać polecenia. Nieprawidłowy
pierwszy znak [7225]". Zupełnie niie wiem co jest żle. Zaznaczałm tez
cały akapit, tylko 1 literę i dalej nie wiem co jjest grane ;)) Może
ktoś wie ??
Przeglądaj wszystkie wypowiedzi z tego tematu
Temat: PM 6,5 inicjał wpuszczany
Chcę zrobić inicjał wpuszczany. Wstawiam kursor w danym akapicie
Narzedzia-.inicjał-nadaj. I tu czasem jest Ok , ale częśćiej mam taki
komunikat : Błąd rozszerzeń. Nie można wykonać polecenia. Nieprawidłowy
pierwszy znak [7225]". Zupełnie niie wiem co jest żle.
Troche lakoniczny opis, ale na wszelki wypadek RTFM:
" Uwaga: Nie można utworzyć inicjału w akapicie, w którym wybrano metodę
ustalania interlinii “Od górnych wydłużen”. Nie można także zamienić na inicjał
grafiki włamanej w tekst, spacji, wyróżnika graficznego itp. Dodatkowo, jeżeli
pierwszy znak ma wydłużenie dolne należy ręcznie poprawić formatowanie, aby
uzyskać wymagany efekt. " [Manual Adobe PM - rozdział Inicjały wpuszczone]
Prawdopodobienie spacjal lub kijowa czcionka, którą Adobi bierze za grafikę:(
pzdr
JUZEK
Temat: PM 6,5 inicjał wpuszczany
| Chcę zrobić inicjał wpuszczany. Wstawiam kursor w danym akapicie
| Narzedzia-.inicjał-nadaj. I tu czasem jest Ok , ale częśćiej mam
taki
| komunikat : Błąd rozszerzeń. Nie można wykonać polecenia.
Nieprawidłowy
| pierwszy znak [7225]". Zupełnie niie wiem co jest żle.
Troche lakoniczny opis, ale na wszelki wypadek RTFM:
" Uwaga: Nie można utworzyć inicjału w akapicie, w którym wybrano
metodę
ustalania interlinii “Od górnych wydłużen”. Nie można
także zamienić na inicjał
grafiki włamanej w tekst, spacji, wyróżnika graficznego itp.
Dodatkowo, jeżeli
pierwszy znak ma wydłużenie dolne należy ręcznie poprawić
formatowanie, aby
uzyskać wymagany efekt. " [Manual Adobe PM - rozdział Inicjały
wpuszczone]
Prawdopodobienie spacjal lub kijowa czcionka, którą Adobi bierze za
grafikę:(
Szczerze mówiąc to dopiero pierwszy raz mam stawic inicjały. Dlatego
robie "na brudno" ;)) Czyli tekst to Times 11/13. Na razie nie mam w
tekscie zadnych obrazków, tabel, wyróżników itp Natomiast jest spacja. I
"tu jest pies pogrzebany". Ale teraz mam "Rozszerzenie nie zakończyło
pracy. Nie mogę wykonac zleconego polecenia. Niedopuszalny argument"
[7209] Czyli jest duza litera ,ale wersy nie zostały odsuniete czyli
inicjał jest na nich. Mogę je odsunąc ręcznie , ale to obrzydliwie
wygląda ;))
Temat: inline graphics
Witam,
przepraszam na wstępie za angielski temat, ale nie wiem jak to jest w
polskiej instrukcji. Problem jest następujący (łatwiej zrozumiały dla
sprawnych operatorów Quarka): należy wykonać w ramce tekstowej jako pierwszy
znak zdjecie. Wiadomo już, że należy przygotowaną ramkę ze zdjęciem
skopiować, wkłuć się w ramkę tekstową i wkleić "zawartość bufora". Przy
dobrze zdefiniowanym stylu przykleja się to do linii bazowej, ale... chcę tę
ramkę opuścić na kilka linii tekstu niżej (coś w rodzaju DropCaps). Jak mam
ustawić i jaki parametr opływania (albo czegoś innego) ramki zdjęciowej,
żeby odpowiednia część tesktu została odepchnięta (jak to się dzieje w
przypadku grafiki niezależnej od ramki tekstowej)?
Nieco jaśniej mówiąc, chodzi mi o opcję wyrównania ramki z inline graphics
do a) linii bazowej pisma (co jest domyślnie ustawione) i b) lini wydłużeń
(w Quarku takie coś istnieje).
Wg podręcznika angielskiego i polskiego helpa mogę sterować położeniem ramki
w pionie odpowiednio ją przesuwając. To prawda - ale bez tego opływania to
bezużyteczne.
Proszę o pomoc, tym bardziej, że to pierwsza rzecz, której nie jestem w
stanie pokonać nawet z podręcznikiem.
Pozdrawiam,
Tomasz Kuc
Temat: inline graphics
W artykule <402a389@news.home.net.pl
Tomasz Kuc napisał(a):
Witam,
przepraszam na wstępie za angielski temat, ale nie wiem jak to jest w
polskiej instrukcji. Problem jest następujący (łatwiej zrozumiały dla
sprawnych operatorów Quarka): należy wykonać w ramce tekstowej jako pierwszy
znak zdjecie. Wiadomo już, że należy przygotowaną ramkę ze zdjęciem
skopiować, wkłuć się w ramkę tekstową i wkleić "zawartość bufora".
Niekoniecznie. Można po prostu zrobić "Place" z włączonym narzędziem
Text, kursorem we właściwym miejscu i zaznaczoną opcją "Replace
selected..." - ID przy imporcie sam utworzy ramkę inline właśnie w tym
miejscu.
Przy
dobrze zdefiniowanym stylu przykleja się to do linii bazowej, ale... chcę tę
ramkę opuścić na kilka linii tekstu niżej (coś w rodzaju DropCaps). Jak mam
ustawić i jaki parametr opływania (albo czegoś innego) ramki zdjęciowej,
żeby odpowiednia część tesktu została odepchnięta (jak to się dzieje w
przypadku grafiki niezależnej od ramki tekstowej)?
Tak się nie da - ale możesz to zrobić jako "drop cap", zaś odstęp w
poziomie przy pomocy kerningu...
Nieco jaśniej mówiąc, chodzi mi o opcję wyrównania ramki z inline graphics
do a) linii bazowej pisma (co jest domyślnie ustawione) i b) lini wydłużeń
(w Quarku takie coś istnieje).
Tego z automatu niestety nie ma. Albo ja nie znalazłem.
Pozdrawiam,
Marek W.
Temat: Pytanie o Alt0150 na początku akapitu ;)
Michał Piechowski <m.piechow@SPAMwp.plnapisał:
Przy wypowiedzi z wcięciem, przy punktowaniu wcięcie.
Osobiście i wyłacznie subiektywnie:
Pzy wypowiedzi - zawsze takie samo wcięcie, jak w reszcie tekstu. W
prasie stosuję tylko znak 0150. Ze względu na to, że 0151 zżera za dużo
miejsca, a już w układach 3-szpaltowych na stronie ca. A4 - pauzy
wyglądają wręcz przekomicznie. Widziałbym ją być może w eleganckim
biuletynie, w układzie 2-szpaltowym. Ale chyba tylko tam. Spacje po
myślniku dobieram "na oko", w zalezności od użytej czcionki. Co oznacza,
że nie zawsze ląduje tam pół fireta. Wstawiam je tylko wtedy, gdy tekst
jest justowany. Równając do lewej - zostawiam standardowe. Czasem spację
zastępuję tabulatorem, kiedy potrzeba mi dokładnego odstępu.
Przy wypunktowaniu - niezależnie od pierwszego znaku - wcinam
najczęściej również pozostałe wiersze podpunktu - do wysokości
pierwszego znaku, zaraz po spacji. Spacje - również dobieram względem
kroju pisma.
Czy robię źle?
BTW, w miesięczniku, 3 łamy, A4. Pytania:
- Czy jest zasadnym zostawienie _pierwszego_ akapitu _bez_ wcięcia? MSZ
wygląda to dobrze.
- Czy po śródtytule, w akapicie zaraz po nim - można darować sobie
pierwsze wcięcie? Również często wygląda to lepiej, niż wcięcie od razu.
Temat: gdzie kupie font EAN/UCC-128?
Witam
tak jak w temacie. szukam najtanszego
Standard EAN/UCC-128 jest kodowany bodajze za pomoca kodu Code-128 z uzytym
pierwszym znakiem zawsze FNC1.
Kod Code-128 uzywa jeszcze pare innych znakow funkcyjnych oraz trzy zestawy
znakow, wiec zeby stosowac font musial bys miec jeszcze dobra orientacje
(wiedze) co konkretnie kodowac lub miec jakis program (makro?) wspierajace.
Dafi
Temat: pytanie do specow od skryptow
Witam,
Chcialbym nieco usprawnic sobie prace w PM, ale nie za bardzo jest czas na
przekopywanie dokumantacji od skryptow. Stad tez prosba o podpowiedzi w
ponizszych, konkretnych przypadkach - zarówno w postaci "wzoru ogólnego",
jak i ewentualnego fragmentu kodu.
1. dodanie formatowania do znajdź-zamień. Np zamień dwa pierwsze znaki w
akapicie na kursywę, czy indeks górny,
2. uzycie stylu na podstawie pierwszego (pierwszych), ostatniego znaku w
akapice, pierwszy znak miałby być podany konkretnie, ale tez ewentualnie w
zakresie, np: jeśli pierwszy znak to nawias to styl xxx, jeśli pierwszy znak
jest mała liczbą (a-z), (lub np. cyfrą) to styl taki a taki.
3. Czy da sie jakos uzyc wyrazen regularnych, zeby dodac "cos" w konretne
miesjce w akapicie, np spację wszędzie jako 3-ci znak.
Z gory dzieki za pomoc,
Pozdrawiam,
Tomasz
Temat: pytanie do specow od skryptow
1. dodanie formatowania do znajdź-zamień. Np zamień dwa pierwsze
znaki w akapicie na kursywę, czy indeks górny,
nie bardzo rozumiem dlaczego chcesz to "dodać" w funkcji
znajdź/zamień...
a skryptem to np.
TextCursor +para
textselect +char, 2
typestyle italic
2. uzycie stylu na podstawie pierwszego (pierwszych), ostatniego
znaku w akapice, pierwszy znak miałby być podany konkretnie, ale tez
ewentualnie w zakresie, np: jeśli pierwszy znak to nawias to styl
xxx, jeśli pierwszy znak jest mała liczbą (a-z), (lub np. cyfrą) to
styl taki a taki.
coś mniej więcej takiego
TextCursor +para
textselect +char, 1
if ....
style ....
3. Czy da sie jakos uzyc wyrazen regularnych, zeby
dodac "cos" w konretne miesjce w akapicie, np spację wszędzie jako
3-ci znak.
nie bardzo rozumiem o co Ci chodzi...
Oczywiście wszystkie te skrypty można zrobić bardziej uniwersalnymi i
samemu z menu wybierać ile znaków skrypt ma zaznaczać, na jakie
zamieniać, na jaki styl, itd...
M.
Temat: Inicjal
W tekscie pierwsza litera (lub 2-3 w przypadku krotkich wyrazow) ma byc
wyrozniona duzym na kilka linii inicjalem. Jesli pierwsza jest cyfra, a za
nia przecinek, to czy inicjal zrobic z samej cyfry, po czym pierwszym
znakiem "normalnego" tekstu bedzie przecinek, czy raczej inicjal zrobic z
cyfry i przecinka?
Marcin
Temat: Corel 9 pytanie
From: "HabaN" <ha@fides.swiebodzin.pl
Subject: Corel 9 pytanie
Jak w Corelu 9 wyłączyć automatyczne poprawianie pierwszego znaku tekstu
na
wielką literę.
Ctrl+J
zakłatka tekst
zakładka autokorekta
tam znajdziesz wszystkie niezbędne kwadraciki
Pozdrawiam
Jacek
Temat: wiszące spójniki w IlluCS2
From: "SosnA" <sosna.g@op.pl
Jak poradzić sobie w Illustratorze CS2 z wiszącymi spójnikami przy pełnym
justowaniu?
Nie wiem czy jest jakiś skrypt, który zrzuca spojniki jak w ID. "Ręcznie"
można np. przez paletę "typografia", w bocznym menu - odhaczyć "bez
dzielenia" (przy zaznaczonym spojniku + pierwszy znak następnego wyrazu).
Można też zrobić styl znakowy z tymże parametrem.
ps. piszę z poziomu AICS1, być może w dwójce jest to już rozwiązane
(inaczej) :)
Pozdrawiam
Bartek
Temat: Kilka pytan odnosnie g++
Poczytalem FAQ, przejzalem kilka stron... przeczytalem nawet Symfonie...
i nadal nie mam odpowiedzi na kilka pytan. Zamieszcze liste :)
1) Jak najefektywniej obsluzyc liste argumentow aplikacji?
Na dzien dzisiejszy korzstam z dwoch funkcji, pierwsza sprawdza liste
argumentow i wystepowanie w nich pozadanych (czyli nieznane sa
ignorowane), druga sprawdza kolejne semafory i jesli pierwsza funkcja
ustawila je na 1 to wykonuje odpowiedni kod (np. przy -v wypisuje wersje).
Problem polega na tym, ze gdzies mi sie kolacze o glowie prostszy
sposob. Gdyby udalo sie zignorowac "-" moznaby pobierac tylko pierwszy
znak i odpowiadajaca mu wlasciwosc. Wowczas po pierwsze nie musze dwa
razy wywolywac strcmp dla "-v" i "--version", ale tez obsluguje
"-version", "-v*". Poza tym powinno dzialac szybciej. Uznalem, ze dobrze
nadalby sie strncmp, tylko nie wiem jak "ominac" minus jesli jest. (tak
robi n.p. eggdrop, przyjmuje -v,--version,-version,v,version).
Jakies rady??? :)
2) Pytanie pewnie bardzo popularne. Gdzie znajde jakis spis/liste
funkcji bibliotecznych? Z mana korzystam, ale preferuje html jesli jest
:) Np. potrzebuje sie dowiedziec czy istnieje gotowa funkcja
sprawdzajaca istnienie elementu w tablicy?
3) Jak jest (gdzie znajde materialy) dotyczace obslugi wyrazen
regularnych (posix,perl) dla C++ ?
Bede wdzieczny za pomoc :)
Pozdr.
Gandalf
Temat: C.D. Segmentation fault przy strtok...
Qrczak <qrc@knm.org.plwrites:
| I jeszcze jedne problem. Czy mozna w sposob elegancki
| przypisac zmiennej typu: char zmienna[30] ciag, ktorego
| pierwszy znak jest wskazywany przez zmienna typu char* i
| konczacy sie ?
| Elegancki tzn nie w petli przypisujacej kazdemu elementowi
| zmienna[30] kolejne wskazania drugiej zmiennej.
strcpy (zmienna, ciag);
Lepiej
strncpy (zmienna, ciag, 30); zmienna[29]=' ';
Pozwala zaoszczedzic wiele czasu i nerwow jesli pewnego razu "ciag"
okaze sie ciut za dlugi.
Pozdrawiam swiatecznie,
Marcin Benke
Temat: Odczyt z pliku!!!
On Sun, 19 Jul 1998, ILI wrote:
"Wiec najpierw musisz sobie zapamietac poczatki wszystkich linii
(przelatujac caly plik), a potem skakac do nich..."
Początki tzn. co?
Numery bajtów w pliku pierwszego znaku każdej linii (albo niektórych).
Inaczej niż przeglądając cały plik od początku nie da się znaleźć n-tej
linii - skąd by było wiadomo, ile spośród poprzednich znaków to znaki
końca linii, a ile jest pozostałych? Więc trzeba wiedzieć, od którego
bajtu zaczyna się dana linia, żeby do niej przeskoczyć, zamiast skanować
cały plik od początku za każdym razem.
Ewentualnie można to połączyć - pamiętać adresy tylko tych początków
linii, których potrzebowaliśmy. To znaczy jeśli program zażąda setnej
linii, to liczymy od początku pliku do setnej, zapamiętując początki.
Jeśli potem pięćdziesiątej, to już to mamy zapamiętane. Jeśli potem
dwusetnej, to startujemy od setnej linii i znajdujemy kolejne sto.
Wszystko zależy od tego, jaki jest cel i charakter szukania tej N-tej
linii. Czy robimy to raz, czy wiele razy? czy zdarza się, że chcemy tylko
kilka linii z początku dużego pliku, więc nie warto zawsze przeglądać
całego? czy linia ma być dostępna a miarę możliwości natychmiast, czy
można sobie pozwolić na spokojne przejrzenie całego pliku? czy musimy
oszczędzać na pamięci? Od tego wszystkiego zależy kompromis między
prostotą a szybkością.
Temat: string
"MateuszB. 'Draco'" wrote:
Niejaki(a) Wlodek Szafran napisał(a) co następuje:
| AnsiString Bufor( dir + koniecdir - 4 );
IMO:
AnsiString Bufor = dir;
Bufor = dir.SubString( Bufor.Length()-3 );
bez bawienia się na char* bo to zawsze może się źle skończyć :-)
Nie zawsze - tylko wtedy, gdy się nie uważa ;-)
Zresztą w swoim przykładzie też używasz "char *" w postaci zmiennej
"dir". No i poza tym, to co napisałem, wydaje mi się najbardziej
naturalnym i zwięzłym sposobem utworzenia nowego AnsiStringu z już
istniejącej tablicy znaków, z obliczoną wcześniej pozycją (podaną jako
wartość zmiennej) pierwszego znaku do kopiowania.
Temat: string
Niejaki(a) Wlodek Szafran napisał(a) co następuje:
| AnsiString Bufor( dir + koniecdir - 4 );
| AnsiString Bufor = dir;
| Bufor = dir.SubString( Bufor.Length()-3 );
| bez bawienia się na char* bo to zawsze może się źle skończyć :-)
Nie zawsze - tylko wtedy, gdy się nie uważa ;-)
oczywiście :-)
Zresztą w swoim przykładzie też używasz "char *" w postaci zmiennej
"dir".
Ponieważ w tym był przechowywany pierwotny string. Więc albo jest to
wymuszone albo ja bym to też zmienił (u siebie) :-)
No i poza tym, to co napisałem, wydaje mi się najbardziej
naturalnym i zwięzłym sposobem utworzenia nowego AnsiStringu z już
istniejącej tablicy znaków, z obliczoną wcześniej pozycją (podaną jako
wartość zmiennej) pierwszego znaku do kopiowania.
Oczywiście jednak u mnie nie trzeba liczyć długości tego char*-a no i nigdy
nie przekroczę zakresu (np. gdy owa długość < 4). Choć Twoje rozwiązanie
jest IMHO ciekawsze :-)
Temat: Acces violation przy wykonywaniu funkcji
Napisz co ta funckja ma robic, a sprobuje Ci pomoc.
Przerobilem to troche:
void przesun(char* c,char* out){
c++;
while(*(out++)=*(c++));
}
dalej mam ten sam problem. Funkcja otrzymuje 2 c-napisy i kopiuje
jeden do drugiego z przesunieciem (docelowy jest o 1 krotszy i nie
zaiwra pierwszego znaku z napisu zrodlowego). Jest to prawie dokladnie
to samo co strcpy(char* a, char*b), ktore napisane jest prawie
dokladnie tak samo...
Temat: Acces violation przy wykonywaniu funkcji
| Napisz co ta funckja ma robic, a sprobuje Ci pomoc.
Przerobilem to troche:
void przesun(char* c,char* out){
c++;
while(*(out++)=*(c++));
}
dalej mam ten sam problem. Funkcja otrzymuje 2 c-napisy i kopiuje
jeden do drugiego z przesunieciem (docelowy jest o 1 krotszy i nie
zaiwra pierwszego znaku z napisu zrodlowego). Jest to prawie dokladnie
to samo co strcpy(char* a, char*b), ktore napisane jest prawie
dokladnie tak samo...
A petla, to jak ma sie zakonczyc?
Pozdrawiam
Jacek
Temat: splash
Użytkownik "Karol Cieśla" <karee@NOSPAMZ.poczta.onet.plnapisał w
wiadomości
jak zrobic petle opozniajaca? Ja zrobilem for (int i = 0;i<500000;i++);
ale to chyba jest dosc prymitywne - nie ma tu jakiegos delaya?
Pozdr - Karol Cieśla
Witam
#include <windows.h
Sleep(3000); // w milisekundach
Pozdrawiam, Joker
W moim adresie e-mail należy usunąć pierwszy znak "_" (antyspam).
Temat: PrzesyÂłanie struktury przez tcp/ip.
Witam,
W internecie zwykle przesyla sie dane tekstowo,
ok, zrobię to tekstowo.
Chcę przesłać tekst:
strcpy(tekst, 'jakis tekst');
ale bez 0 na końcu, tylko na początku z integerem
o wartosci strlen(tekst);
jak przeslac tego pierwszego integera tekstowo???
przecież może zajmowac albo 1 albo 5 bajtów w
zależności od ilości cyfer. Nie mogę tego skleić razem
i sprawdzać w serwerze, czy aby kolejny bajt to nie
litera (bo pierwszym znakiem 'testu' mogła by być cyfra).
pozdrawiam,
Kuba
Temat: czytanie z pliku
In article <anv6j1$qg@news2.tpi.pl, Marcin Cylke wrote:
| Pokaz *konkretna* deklaracje.
| Podejrzewam, ze osoba[i].nazwisko nie jest zaallokowany.
Inicjalizacje zmiennej linia,gdzie mam przechowywac linie sczytane z
pliku przeprowadzam tak:
char *linia;
Natomiast pozniejsze przypisanie zawartosci wskaznika linia do zmiennej
linia_wczytywana robie poprostu tak:
linia = linia_wczytywana;
1) na co wskazuje wskaznik ,,linia'' w trakcie wywolania funkcji
czytajacej ?
2) jw. co do linia_wczytywana.
read/scanf/gets potrzebuja wskaznika do *zaallokowanej* pamieci (czyli np.
char linia[200], lub char *linia = malloc(200);)
Niby wszelkie zrodla ktore przegladalem na ten temat mowia ze powinno
sie przypisywac poprzez linia=&linia_wczytywana (moglem cos pomylic, ale
na 100% gdizes powinno byc "&" :) ) - tyle ze mi wyskakiwal wtedy blad
Tak by bylo, gdyby linia_wczytywana *nie* byla wskaznikiem a np. pierwszym
znakiem.
linia_wczytywana == &linia_wczytywana[0] == &(*linia_wczytywana)
Wskaznik wskaznikiem ale o to, na co wskazuje musisz sie juz zatroszczyc.
Pozdr,
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: problem ze znakiem
#define kilka_bsow ""
...
while ((znak = getchar()) != EOF)
{
if(znak == '')
co wogole robi zamienia sie na znaku tabulatora ?? - nie wiem wiem pytam
Witaj
a teraz rozwazmy mam
#define klika_przejsc "
"
to kazdu "
" zamieniony zostaje na znaki w HEX 1310 tj nowa linia i powrot
karetki no nie ?
i w miejsce znak by na przyklad usunac jeden z
musisz najpierw porownac z
znak=13 i znak+1=10 w asmie to dziala
np a=0 ; ilosc enterow
i jezeli pierwszy znak =13 a nastepny =10
to a++
i idziemy dalej
jezeli pierwszy znak =13 a nastepny =10
to a++
jezeli a1 to komunikat a jezeli nie idziemy dalej
i tak w petli do oportu -
ps co robi np
alakota ?
wiem ze ala
kota zrobi cos takiego jak
ala
kota
pozdr
Rafal
(wszystko i nic)
Temat: strtol
Krzysiek wrote:
Co oznacza char** ?
Wskażnik do wskaźnika, czyli adres wskaźnika na obiekty typu char.
Nie rozumiem ... skladnia funkcji wyglada tak
long strtol (const char *str, char **end, int p);
ja rozumiem ja tak:
funkcja zaczyna konwertowac od miejsca na ktore wskazuje "str" i konczy na
"end"; a p to system liczenia,
Ale chyba sie myle, zatem;
1) Do czego zatem sluzy argument end ?
Funkcja zwraca poprzez niego adres do pierwszego znaku, który przerwie proces
konwersji. Jeśli ten adres jest taki sam jak w str, to znaczy, że ani jednego znaku
nie udało się przekonwertować do liczby.
2) W jaki sposob przekonwertowac string np. od lancuch[2] do lancuch[6] ?
Mi przychodzi na myśl tylko skopiowanie tych znaków do oddzielnej tablicy. Może ktoś
ma lepszy pomysł?
Pozdrawiam
Piotrek
Temat: Pytanie o IF
Robinet napisał(a) w wiadomości: ...
Czy moglby mi ktos powiedziec czy mozna porownywac dwa lancuchy np. if
("kot"=="kot")?Pamietam ze w amigowskim amosie byla taka mozliwosc, a w
C++zglaszany jest blad "Cannot convert 'char' to 'char'.
Pozdrawiam
Robinet
trzeba użyć strcmp, bo napis "kot" jest traktowany jako
_wskaźnik_ do pierwszego znaku łańcucha, więc
"kot"=="kot" w najlepszym razie porówna wskaźniki
Temat: Ansi C
On 16 Dec 2001 14:09:14 +0100, Sztygar wrote:
jak skasowac pierwszy wiersz z pliku, ktory ma ich iles tam? (plik to zbior
nazwisk)
1. Odczytywac znaki az do pierwszego znaku konca linii. Ignorowac odczytane
znaki.
2. Odczytywac kolejne znaki, az do konca pliku i kazdy odczytany znak
zapisywac do nowego pliku.
3. Zastapic stary plik nowym.
Krotko mowiac --- skopiowac caly plik z pominieciem pierwszej linii.
i drugie pytanie: jak skasowac ostatni znak z pliku (chodzi o przecienk).
mowa jest oczywiscie o plikach tekstowych.
Mozna uzyc funkcji ``truncate'', ale nie ma jej w standardzie.
Temat: Zaraz zwariuje.. cout i char*
Dnia 2005-05-17 19:01, Użytkownik Bronek Kozicki napisał:
tst[i] = 'a';
| tst++;
błąd, skasuj ten wiersz! przecież już w instrukcji for powiększasz i o
jeden; druga taka operacje w tym miejscu spowoduje że w każdej iteracji
pętli i będzie większe o 2 od poprzedniej iteracji, czyli będziesz
ustawiać jeden znak i jeden przeskakiwać. Chyba nie o to chodziło.
Bronek... zagalopowałeś się chyba ;)
On nie pisze tst[i], lesz przesuwa wskaźnik... 4 razy robiąc inkrementację.
Albo tst[i++], albo *tst++ :)
| *tst = 0;
źle. Ponownie ustawiasz pierwszy znak napisu. Chciałeś ustawić ostatni
znak w tablicy, czyli:
Nooo chyba dobrze :)
_On przesuwa wskaznik_... więc zakończy cacy.
Faktem jest, że wyląduje tym wskaźnikiem na końcu i cout pokaże mu
właśnie nic.
Mozdrawiam
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: LPTSTR to string
inf@o2.pl wrote:
Witam,
drazac dalej temat jesli mam:
char tab[]={0x00,0x9f,0x19};
String^ napis=gcnew String(tab);
to w napisie nie ma nic poniewaz wrzuca do pierwszego znaku konca
' '. Jak to ominac?
wydaje mi się, że nie znasz nawet podstaw C, a zabierasz się za
programowanie w języku o dwa stopnie bardziej skomplikowanym ...
B.
Temat: jak to jest ze znakami nowej linii (programik w C)
Dnia 24-11-2007, So o godzinie 13:55 +0100, Przemysław Szeremiota pisze:
Więc można by przyjąć interpretację taką, że liczba wierszy w pliku
równa się liczbie znaków '
' +1 jeśli plik jest niepusty (nawet, jeśli
'
' to pierwszy znak pliku -- następny wiersz implikuje istnienie
poprzedniego), albo 0 jeśli plik jest pusty
To jest niespójne. Czyli istnieje plik zawierający dwie puste linie
(i nic więcej), ale nie istnieje plik zawierający jedną pustą linię?
Najczęściej spotykana interpretacja jest taka, że plik ma tyle linii,
ile jest znaków "
", jeśli ostatnim znakiem jest "
" albo plik jest
pusty, bądź o jedną linię więcej, jeśli ostatnim znakiem nie jest "
".
Przy czym typowe niepuste pliki tekstowe kończą się "
", a definicja
uwzględnia pliki niezakończone "
" tylko dlatego, że trudno zabronić
tworzenia takich plików i coś trzeba z nimi zrobić.
Chyba wszystkie języki programowania, które oferują czytanie pliku
linia po linii, robią to zgodnie z tą definicją. Na pewno C, C++, Perl
i Python.
Temat: kolejne pytanie o lancuchy
Moze troszke jasniej???? znak konca wiersza??? o co chodzi?
no wiec:
mam
1. strukture
struct str {char
imie[20],nazw[20],wiek[20],adres[20],kod[7],miasto[10];}dane;
2. wprowadzam dane do struktury za pomoca:
puts("
Podaj nowe imie");
gets(dane.imie);
itd..
3. zapisuje do pliku
fwrite(&dane,sizeof(dane),1,ksiazka);
4. odczytuje z pliku
fread(&dane,sizeof(dane),1,ksiazka);
5. wypisuje na ekranie
printf("
Imie: %s
Nazwisko: %s
Wiek: %s
Adres: %s
%s %s
"
,dane.imie, dane.nazw, dane.wiek, dane.adres, dane.kod, dane.miasto);
i tarz moj problem
jezeli przy wpisywaniu podam ciagi do 20 znakow wszystko bedzie ok, jezli
podam dluzsze program nie zpisze znaku konca wiersz i przy wypisywaniu
wypisze mi wszystko co znajduje sie w pliku od miejsca gdzie zaczyna sie
odpowiedni lancuch do pierwszego znaku konca wiersza.
Przykladowo
Podaje pierwszy lanuch, ktory ma 20 znakow(wiec zajmuje cale przydzielone
miejsce i nie moze postawic znaku konca)
nastepne lancuch podaje krotsze niz 20
przy wypisywaniu na ekran otrzymuje
wpis pierwsz + wpis drugi, wpis drugi, trzeci ....
nie wiem czy jasniej, ale sie staralem ;o)
Temat: tablica - Początkujący (Nie krzyczeć)
czuję nieprzyjemne ciarki na plecach widząc taki kod. Możesz go
wytłumaczyć? W szczególności po co "sizeof(char)", co znaczy
"stdin-level", dlaczego na początku pętli jest "ungetc(getc..." ?
Szablony, czy wektory z std to elementy raczej dla programisty z pewnym
doświadczeniem (jak dużym to sprawa względna). Twój program jest owszem
bezpieczniejszy, być może prostszy, ale dla kogoś, kto wie co to szablony.
Nie twierdzę, że mój jest bezpieczny (testowany tylko na BCB), ale napisałem
najprościej jak się da z uwzględnieniem problemu znajomości rozmiaru tablicy
przez jej wypełnieniem. Na poważnie zrobiłbym to inaczej (z większą ilością
kodu).
sizeof(char) ? - owszem można to odpuścić, zły nawyk, dla char niepotrzebny.
level ? - wykorzystałem to do określenia ważnych znaków w buforze klawiatury
(poziom jego zapełnienia)
ungetc(getc... - tylko aby poczekać na znak '
' z klawiatury (zakończenie
wywołania getc) a odczytany pierwszy znak zwrócić (unget) aby go odczytać
ponownie wraz z całym stringiem (gets).
Jeszcze dodam - coś takiego przyszło mi do głowy przy czytaniu Twojego posta
i nigdy nie testowałem tego w praktyce. Ale działa :-)
Pozdrawiam. Fil.
Temat: tablica - Początkujący (Nie krzyczeć)
Fil <filemo@poczta.onet.plwrote:
Szablony, czy wektory z std to elementy raczej dla programisty z
pewnym doświadczeniem (jak dużym to sprawa względna). Twój program
jest owszem bezpieczniejszy, być może prostszy, ale dla kogoś, kto
wie co to szablony.
takie elementarne zastosowania szablonów są w pierwszych rozdziałach
dobrego podręcznika C++, zanim pojawią się wskaźniki.
level ? - wykorzystałem to do określenia ważnych znaków
w buforze klawiatury (poziom jego zapełnienia)
ale skąd się wziął ten level? Jest w jakimś standardzie, implementuje go
jakiś inny kompilator oprócz tego na którym testowałeś?
ungetc(getc... - tylko aby poczekać na znak '
' z klawiatury
(zakończenie wywołania getc) a odczytany pierwszy znak zwrócić
(unget) aby go odczytać ponownie wraz z całym stringiem (gets).
ale po co? Przecież wejście jest buforowane, mogłeś po prostu zrobić
gets albo getchar. Z drugiej strony - zastanów się co Twój program zrobi
jeżeli użytkownik poda wiele imion przed wciśnięciem enter?
Co do rozmiaru tablicy - u Ciebie jest z góry ustalony na trzy.
B.
Temat: tablica - Początkujący (Nie krzyczeć)
Poza tym, że to nieprzenośne, to nie jest wcale długość linii,
jeśli linia jest dłuższa niż bufor.
Nie mówię, że level jest to długość linii, tylko, że do tego ja to
wykorzystuję.
I rzeczywiście jest tak jak mówisz - jest nieprzenośne.
Dodam tylko, że:
Zakończenie wywołania funkcji getc, czy gets następuje po wprowadzeniu znaku
'
'.
Tzn. gets odczyta string od pierwszego znaku w buforze klawiatury do znaku
'
'.
Nawet jeśli będą w buforze jakieś inne znaki (co w praktyce zdarzy się
niezwykle radko), to nie ma większego znaczenia - w takim przypadku, co
najwyżej, zarezerwowana zostanie większa przestrzeń dla tablicy
przechowującej string, natomiast na pewno nie mniejsza (co mogłoby
spowodować problemy).
Pozdrawiam. Fil.
Temat: tablica - Początkujący (Nie krzyczeć)
na pewno? Gdzie to jest napisane?
| Z drugiej strony - zastanów się co Twój program zrobi jeżeli
| użytkownik poda wiele imion przed wciśnięciem enter?
| Moje założenie = jedno imię w jednej linii
program tego nie sprawdza ...
Pomijając kwestę levela program to jak najbardziej sprawdza.
gets zapisuje do tablicy wszystkie znaki począwszy od pierwszego znaku
bufora klawiatury do znaku '
'. Pobrane usuwa z bufora. Pozostałe znaki
nadal sobie siedzą i są "obrabiane" w kolejnej iteracji.
Zatem w jednej iteracji wyłuskane zostanie jedno imie, a nie kilka.
Fil.
Temat: tablica - Początkujący (Nie krzyczeć)
Fil wrote:
| Z drugiej strony - zastanów się co Twój program zrobi jeżeli
| użytkownik poda wiele imion przed wciśnięciem enter?
| Moje założenie = jedno imię w jednej linii
| program tego nie sprawdza ...
Pomijając kwestę levela program to jak najbardziej sprawdza.
gets zapisuje do tablicy wszystkie znaki począwszy od pierwszego znaku
bufora klawiatury do znaku '
'. Pobrane usuwa z bufora. Pozostałe znaki
nadal sobie siedzą i są "obrabiane" w kolejnej iteracji.
jeżeli użytkownik poda w jednym wierszu kilka wyrazów rozdzielonych
spacjami, to program założy że jest to jedno imię. I to jest IMO bardzo
zaskakujące zachowanie.
B.
Temat: nazwy plikow w standardzie
On Tue, 17 Feb 2004 14:34:29 +0100, "Jarek" <jarek@o2.plwrote:
A podkreslinik " _
Tak. Ale tez nie uzywalbym go jako pierwszego znaku /cyfr takze nie/.
" albo myslnik "-" sa bezpieczne czy nie ?
Srednio.
powaznie, ja
powiedzialbym, ze raczej bezpieczne, ale nigdy nic nie wiadomo.
Spoko, kazdy producent-tworca bedzie Cie zapewnial, ze u niego to
nawet Unicode-32 bit lyka. Wole dmuchac na zimne po tym, jak po
zmianie nazwy w windzie nie mozna bylo skasowac pliku, bo
costam-costam. Konczylo sie to na edycji na poziomie sektorow dysku,
zmianach nazwy i dopiero wtedy plik stawal sie do uzycia.
milego dnia zycze
hej
Temat: switch
:
: : : Witam,
:
[cut]
: Jak zrobie i[2] i wpisze ab to wyskakuje aa zamiast ab
:
: Powinno byc i[3] co najmniej...
:
Racja. Za poza tym instrukcja:
switch (i)
{
case 'a' : cout<<"aa";
break;
case 'ab' : cout<<"ab";
break;
}
porównuje tylko pierwszy znak wczytanego stringa i, stąd opisany efekt.
I teraz moje pytanie: czy stała 'ab' jest dozwolona? Mój kompilator daje
warning.
Temat: switch
ja bym tu nie ryzykowal z 'ab'
nawet jak chcesz porowanc lancuchy to masz funkcje strcmp()
dla mnie dziwne jest to troche z tymi chrami
"Marcin Hoppe" <hop@rubikon.plwrote in message
:
: : : Witam,
:
[cut]
: Jak zrobie i[2] i wpisze ab to wyskakuje aa zamiast ab
:
: Powinno byc i[3] co najmniej...
:
Racja. Za poza tym instrukcja:
switch (i)
{
case 'a' : cout<<"aa";
break;
case 'ab' : cout<<"ab";
break;
}
porównuje tylko pierwszy znak wczytanego stringa i, stąd opisany efekt.
I teraz moje pytanie: czy stała 'ab' jest dozwolona? Mój kompilator daje
warning.
--
Marcin Hoppe
Email: hop@rubikon.pl -- Gadu-Gadu: 2222891
WWW: temporarily unavailable
Temat: Kto rozwiąże zadanie Pilne!!
Adam Michalski napisał(a) w wiadomości: <7acol5$14@sunsite.icm.edu.pl...
Marcin napisał(a) w wiadomości: <01be5997$ae615260$0bf774c3@default...
| Poniższy program został skompilowany do pliku arg_test.exe i uruchomiony
| poleceniem MS-DOS:
| ARG_TEST.EXE 12 345 678 9
| Jaki napis pojawi się na ekranie po wykonaniu programu i dlaczego?
| #include<stdio.h
| void main (int argc, char *argv[ ]);
| {
| printf("
%d %c
", argc, *argv[3]+1);
| }
5, 7
5 bo liczebnosc argumentow wynosi 5 (4 podane + nazwa programu), a 7 bo
odwolujesz sie do 3-ego argumentu (dokladnie to 4-ego, ale pierwszym jest
nazwa programu) oraz do jego 2 pozycji (bo jest + 1).
Troche to opisalem niezbyt dokladnie, ale wyjasnienie jest chyba
wystarczajace. Bo dokladnie to *argv[3] wskazuje na pierwszy znak 3-ego
argumentu, a + 1 zwieksza ten wskaznik o 1.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Niezupełnie dlatego. *argv[3] daje pierwszy znak 3-go parametru '6' (54
ASCII), do tego dodajemy 1 - wynik '7'.
Operator wyłuskania (*) ma wyższy priorytet niż dodawanie.
Ale wychodzi na to samo :-)
Pozdrowienia
Wojtek L.
Temat: Kto rozwiąże zadanie Pilne!!
WTL napisał(a) w wiadomości: <7actho$bk@zeus.polsl.gliwice.pl...
Adam Michalski napisał(a) w wiadomości:
<7acol5$14@sunsite.icm.edu.pl...
| Marcin napisał(a) w wiadomości: <01be5997$ae615260$0bf774c3@default...
| Poniższy program został skompilowany do pliku arg_test.exe i uruchomiony
| poleceniem MS-DOS:
| ARG_TEST.EXE 12 345 678 9
| Jaki napis pojawi się na ekranie po wykonaniu programu i dlaczego?
| #include<stdio.h
| void main (int argc, char *argv[ ]);
| {
| printf("
%d %c
", argc, *argv[3]+1);
| }
| 5, 7
| 5 bo liczebnosc argumentow wynosi 5 (4 podane + nazwa programu), a 7 bo
| odwolujesz sie do 3-ego argumentu (dokladnie to 4-ego, ale pierwszym jest
| nazwa programu) oraz do jego 2 pozycji (bo jest + 1).
| Troche to opisalem niezbyt dokladnie, ale wyjasnienie jest chyba
| wystarczajace. Bo dokladnie to *argv[3] wskazuje na pierwszy znak 3-ego
| argumentu, a + 1 zwieksza ten wskaznik o 1.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Niezupełnie dlatego. *argv[3] daje pierwszy znak 3-go parametru '6' (54
ASCII), do tego dodajemy 1 - wynik '7'.
Operator wyłuskania (*) ma wyższy priorytet niż dodawanie.
Ale wychodzi na to samo :-)
Jasne, dzieki za sluszna uwage :-)
Pozdrawiam
Adam Michalski, 16 lat
aims@polbox.com
aims@box43.gnet.pl
aims@free.com.pl
Temat: String do UTF8
PiotrS <spam-no-spam-|p|i|e|c|h|u|1|@GIN_SPAMERZEwp.plw wiadomości
news:dbqsd1$rrl$1@nemesis.news.tpi.pl napisał(a):
[...]
Chodzi o to ze zapisuje do pliku string. Po otwarciu pliku edytor
tekstowy pokazuje mi ASCII a chcialbym UTF-8 :)
Napis ASCII ze znakami <128 jest jednocześnie poprawnym UTF-8.
Plik może wymagać na początku odpowiedniej sekwencji bajtów
(znacznik) - najprościej "zrobić" ją sobie zapisując pusty plik
z wymuszeniem danego formatu - powinno wystarczyć. Dla UTF-8
jest to 0xEF 0xBB 0xBF, dla UTF-16LE: 0xFF 0xFE, dla UTF-16BE:
0xFE 0xFF. Ogólnie - znacznikiem, że plik należy interpretować
jako unicode'owy jest fakt, że pierwszym znakiem jest znak
o kodzie 0x0FEFF zapisany zgodnie z daną konwencją zapisu UNICODE.
Normalnie pisze w Javie jednak okolocznosci zmusily mnie do napisanie
jednej funkcji w C++ i to stwarza kolejne problemy (pisze w Dev-C++ w
tej chwili). Na przyklad nie wiem co to wstring :)
std::string to tak naprawdę std::basic_string<char, a std::wstring -
std::basic_string<wchar_t.
Chcialbym to zrobic uzywajac standardowych narzedzi.
Nadal nie wiem, czy w napisie występują znaki 127 i jak powinny
być interpretowane - od tego zależy cała reszta 8-)
Temat: String do UTF8
PiotrS <spam-no-spam-|p|i|e|c|h|u|1|@GIN_SPAMERZEwp.plw wiadomości
news:dbqsd1$rrl$1@nemesis.news.tpi.pl napisał(a):
[...]
| Chodzi o to ze zapisuje do pliku string. Po otwarciu pliku edytor
| tekstowy pokazuje mi ASCII a chcialbym UTF-8 :)
Napis ASCII ze znakami <128 jest jednocześnie poprawnym UTF-8.
Plik może wymagać na początku odpowiedniej sekwencji bajtów
(znacznik) - najprościej "zrobić" ją sobie zapisując pusty plik
z wymuszeniem danego formatu - powinno wystarczyć. Dla UTF-8
jest to 0xEF 0xBB 0xBF, dla UTF-16LE: 0xFF 0xFE, dla UTF-16BE:
0xFE 0xFF. Ogólnie - znacznikiem, że plik należy interpretować
jako unicode'owy jest fakt, że pierwszym znakiem jest znak
o kodzie 0x0FEFF zapisany zgodnie z daną konwencją zapisu UNICODE.
| Normalnie pisze w Javie jednak okolocznosci zmusily mnie do napisanie
| jednej funkcji w C++ i to stwarza kolejne problemy (pisze w Dev-C++ w
| tej chwili). Na przyklad nie wiem co to wstring :)
std::string to tak naprawdę std::basic_string<char, a std::wstring -
std::basic_string<wchar_t.
| Chcialbym to zrobic uzywajac standardowych narzedzi.
Nadal nie wiem, czy w napisie występują znaki 127 i jak powinny
być interpretowane - od tego zależy cała reszta 8-)
Zapomniałem dodac, ze występują tam niemieckie znaki, dlatego jak bawie sie
zwyklym stringiem to mi sie wszystko sypie.
Piotr
Temat: A czemu to jest zle???????
Przy okazji na tej "innej grupie" niezbyt poprawnie Ci napisali co oznacza
zapis Wyspa = ble (pointer to po polsku wskaznik).
Tak przy okazji... to mi dobrze napisali tylko ty jeszcze za krotko chyba
programujesz zeby to zrozumiec. I nie rob ze mnie debila.... wiem co to jest
pointer. Nie jestem tepym studentem ktory kuje c++ na pamiec. Tak wogole to
mam 17lat.
Zapis:
char a[20];
char *Wyspa = a;
Nie zapisujemy w
pointerze char* Wyspa, to jedynie przypisanie wskaznikowi (Wyspa) adresu
tablicy ble (nazwa tablicy jest jednoczesnie adresem).
a co robimy??, a co to jest przypisanie?? :) Przeciez to jest zapisanie
adresu char a[0] (czyli pierwszego znaku) do char *Wyspa. Jesli nie
zapisujemy to co robimy??
Gdzies ten adres musi byc przechowywany. Tak samo jak bys powiedzial ze link
w Windows to wskaznik ktory ma 0 bajtow, a to nie prawda. To przeciez plik
*.lnk ktory zawiera sciezke do proga. Tak samo jest ze wskaznikiem. Czemu
deklarujesz wskaznik??? No zeby zarezerwowac miejsce w pamieci na adres.
Widzisz jak ty malo wiesz o pointerach???
Temat: szybkie wyszukiwanie, ale jak?
[...]
do
{
fgets(linia,115,fp1);// tutaj jestem pewien ze zaladuje caly wiersz i
przejdze
a=(strstr(linia,tab));
if (a!=0)
k++;
c=getc(fp1);
};
while (c!=EOF)
printf("Wyraz %s wystepowal w pliku %d razy",tab,k);
fclose(fp1);
}
ale to pod warunkiem ze pierwszy znak jest mi nie potrzebny. nie wiem
jak
zrobic nie pobierajc i nie sprawdzajac pierwszego znaku z wiersza.
pozdrawiam
sztygar
Tak jak ci pokazałem - badając wynik funkcji fgets. Wtedy getc jest
zbędne.
pozdrawiam,
mOSAd
Temat: Wskazniki tablicowo - podstawy
On 01/17/2005 1:57 PM, Radek wrote:
Ale ja tu nie widze alokacji pamieci (chyba ze to char *PTYPE = "000000";
alokuje ale nie wydaje mi sie)
W tym układzie osobna alokacja nie jest potrzebna -- wskaźnik jest
inicjalizowany adresem pierwszego znaku stałego napisu, znajdującego się
już gdzieś w pamięci.
Temat: Problem z GetOpenFileName
Zmagań ciąg dalszy... Dalej będę pisał o wersji Unicode.
Otóż okazało się, że funkcja nie GetOpenFileName nie wypełniła mi bufora,
który wcześniej wyczyściłem za pomocą ZeroMemory. Tzn. po deklaracji
static TCHAR SciezkaPliku[1024] miałem ZeroMemory (SciezkaPliku,
RozmiarSciezkiPliku * sizeof (TCHAR)). Z buforem NazwaPliku zapomniałem tego
zrobić :-). Po wykomentowaniu linii zerującej pamięć program działa zgodnie
z oczekiwaniami... No tyle tylko, że używanie takiej niezainicjowanej
pamięci nie wydaje mi się zbyt prawidłowe. Szczerze mówiąc już bardziej
spodziewałbym się nieprawidłowego działania w wypadku buforu NazwaPliku - o
którego wyzerowaniu, jako się rzekło, zapomniałem. Co więcej sam MSDN
twierdzi, że wartość 0 (to chyba to samo, co NULL? - program komiluję jako
C++) jest - przynajmniej w wypadku pierwszego znaku bufora - jak najbardziej
prawidłowa:
lpstrFile
Pointer to a buffer that contains a file name used to initialize the File
Name edit control. The first character of this buffer must be NULL if
initialization is not necessary. When the GetOpenFileName or GetSaveFileName
function returns successfully, this buffer contains the drive designator,
path, file name, and extension of the selected file.
Pytanie moje sprowadza się więc do: dlaczego nie mogę wyzerować buforu
przechowującego znaki w formacie Unicode po prostu za pomocą ZeroMemory? I
dalej - jak go więc wyczyścić - bo wydaje mi się, że wyczyścić go przed
użyciem jednak trzeba?
Przeglądaj wszystkie wypowiedzi z tego tematu
Temat: kod ASCII
DZ wrote:
jak odczytac kod asci znaku przechowywanego w zmiennej string ?
W C nie ma tak naprawde typu string. Ale chyba wiem
o co moze ci chodzic.
char *string = "ala ma kota";
printf("%d
", string[0]); /* kod pierwszego znaku w lancuchu */
Trix.
Temat: pomóżcie w napisaniu funkcji...
hej,
chodzi o napisanie funkcji int o nagłówku
int fun(char nap[], char* wsk[], int size);
która pobiera napis nap oraz tablice wskaźników typu char o rozmiarze size.
Funkcja ma za zadanie:
- wpisać do kolejnych elementów tablicy wsk adresy początkowych liter słów
występujących w napisie nap
- zwrócić ilośc znalezionych słów, lub -1 jeśli tablica wsk okazała się za
mała, czyli gdy ilość słów w napisie przekracza size.
Za początek słowa traktujemy znak który jest literą i albo jest pierwszym
znakiem napisu albo znak występujący przed nim nie jest literą .To czy znak
zn jest literą można testować badając prawdziwość warunku
'a' <= zn && zn <= 'z' || 'A' <= zn && zn <= 'Z'
treść zadania przepisałem z pdf autorstwa prof, Wernera z PJWSTK
Dziękuję za pomoc
Siemasz
Temat: procedury do testowania kompilatorów C
pluton wrote:
Mylisz, ze ktokolwiek odważy się wypuścić w świat niedziałający
kompilator ?? :)
Oj, zebys sie nie zdziwil.
Sam mialem wiele problemow z kompilatorami do procesorkow jednoukladowych.
Np.
KEIL C51 v3.40 - kompilator do Intel 8051, poniewaz ma maly stos,
argumenty funkcji sa przekazywane przez rejestry,
- nie dzialaja wskazniki do zmiennych automatycznych
- zle dzialaja wskazniki do funkcji (glebokie zaleznosci):
np. mamy moduly aa.c, bb.c, cc.c
w aa.c zdefiniowana funkcja void aa( char par );
w bb.c wywoluje funkcje void cc( (void(*fptr)(char) );
gdzie fptr jest funkcja aa z modulu aa.c, funkcja cc zdefiniowana
w cc.c. Wtedy wywolujac z cc.c funkcje przez wskaznik fptr, kompilator
gubi parametry wywolania fptr
- nie mozna stosowac rekurencji (wlasciwie mozna, ale wiaze sie to z
duzymi narzutami na szybkosc kodu i zajetosc ramu, a i tak sa problemy )
Wiekszosc tego nie jest opisana w dokumentacji.
Inny prosty przyklad:
Kompilator Hitech do procesora Z80, wersja 3.09.
- nie raportuje bledu, jesli pliki wlaczane includem nie istnieja (ilez czasu
przez to stracilem...)
- dyrektywy preprocesora musza zaczynac sie od pierwszego znaku w lini
Temat: algorytm -> palindromy
Witam
Witam,
poszukuje algorytmu ktory wyszukiwalby w pliku tekstowym slowa jak np.
kajak
czy potop, tzn. te ktore brzmia jednakowo czytane od przodu jak i od tylu.
niestety - jestem BARDZO poczatkujacy jesli chodzi o C/C++ i nie mam szans
na wlasnoreczne napisanie takiego algorytmu, a program musze przygotowac
do
szkoly. jesli ktos mialby podobny algorytm lub wiedzial gdzie go znalesc -
napewno sie odwdziecze (jestem MG pbem'a The Realm:)
Szukasz poczatku i konca slowa (czyli pierwszego znaku bedacego litera po
znakach nie
bedacych litera oraz ostatniego znaku bedacego litera przed innym
nieliterowym).
Pomocna bedzie funkcja isalpha().
Jak masz slowo wyodrebnione to porownujesz pierwsza litere z osotatnia,
druga z przedostatnia,
itd do srodka wyrazu.
Jezeli kazde porowanie jest prawdziwe to wyraz jest palindromem. Jezeli
ktorekolwiek jest falszywe
to nie jest palindromem.
To tyle co mi od razu wpadlo do glowy.
Pozdrawiam
Marcin
Temat: C, Linux, ncurses i konsola utf-8
Witam.
Zawsze używałem iso-2 na konsoli, ale teraz programik ma działać na
utf-8 i mam zagwozdkę.
Teoretycznie powinienem użyć addwstr zamiast addstr do wyświetlenia tekstu.
Piszę więc coś takiego (dla czytelności pomijam sprawdzanie błędów):
my_add_str(char *buf) /* buf jest w ISO-2, zawsze strlen(buf)<80 */
{
wchar_t outbuf[80];
size_t lin,lout;
char *outc;
iconv_t ic;
ic=iconv_open("WCHAR_T","ISO-8859-2");
lin=strlen(bu);
lout=79*sizeof(wchar_t);
outc=(char *)outbuf;
iconv(ic,&buf,&lin,&outc,&lout);
iconv_close(ic);
*(wchar_t *)outc=0;
addwstr(outbuf);
}
linkuję z cursesw i... wyświetla mi się linia do pierwszego znaku o
kodzie powyżej 0xff (tzn 'ó' się wyświetla, ale na 'ą' się wykrzacza).
Iconv konwertuje prawidłowo...
Czego ja k... mać nie doczytałem?
Zaznaczam, że cały program działa ślicznie pod konsolą ISO-2 jeśli
zamiast mojej procedury wywołuję po prostu addstr.
ethanak
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: podzial stringa
Cabra wrote:
dziekuje za te wszystko podpowiedzi - poczytalem o tych funkcjach
strcpy(); i strncpy(); - tylko ze np. ta druga kopiuje zawsze od poczatku
stringa do jakiegos okreslonego znakui..... a jak zaznaczyc zeby nie
odpoczatku tylko od danego znaku ????
W C mozna przesuwac wskazniki po tablicach. Wystarczy dodac numer znaku
do wskaznika na poczatek.
strcpy(dest, src+0) - od pierwszego znaku (+0 oczywiscie mozna pominac)
strcpy(dest, src+1) - od drugiego znaku
strcpy(dest, src+2) - od trzeciego znaku
strcpy(dest, src+3) - od czwartego znaku
strcpy(dest, src+4) - od piatego znaku
Mozna to tez zapisac jako &src[n]
itp.
Krzysiek Rudnik
Temat: tylko pierwszy znak
Witam !
mam dwa pytania:
1. oto kawa³ek kodu:
int i;
char l, m, n;
//int g=0;
main(void)
{
clrscr();
// cout << "
podaj jak±¶ literkê, albo cyferkê :-) ";
cin | l, m, n;
//goto losuj;
// cout << "
";
randomize();
for (i=0; i<6; i++)
switch (rand() % 3)
{
case 0: printf("%c", l); break;
case 1: printf("%c", m); break;
case 2: printf("%c", n); break;
}
getch();
return 0;
}
w zwi±zku z tym kawa³kiem kodu mam pytanie:
co jest nie tak, skoro po podaniu 3 znków na ekranie wy¶wietla mi tylko
pierwszy znak [losowo i to jest OK] ale tam gdzie maj± byæ znaki 'm' i 'n'
wy¶wietla puste pola;
2. w jaki sposób policzyæ znaki wy¶wietlone na ekranie ???
wpisane przez u¿ytkownika;
Z góry serdeczne dziêki !
Temat: AnsiString i pojedyczne litery
On 05/12/2006 1:04 PM, Krzysztof wrote:
Jak ze stringa odczytać poszczególne bajty i wpisać je
do nowych zmiennych ?
unsigned char a1, a2, a3, a4, a5, a6;
AnsiString Text;
Text = ComPort1-ReadString();
... i teraz jak przepisać te bajty. Wiem, że zmienna Text
ma rozmiar 6 bajtów.
Napis trzymany w AnsiString'u można indeksować jak tablicę, gdzie indeks
pierwszego znaku to 1, a nie 0 jak jest przyjęte w C/C++. Tak więc:
a1 = Text[1];
a2 = Text[2];
//...itd.
Wygodniej jednak będzie użyć tablicy zamiast wielu zmiennych, wtedy
wartości można przepisać w pętli zamiast wielokrotnego podstawiania.
Temat: AnsiString i pojedyczne litery
Napis trzymany w AnsiString'u można indeksować jak tablicę, gdzie indeks
pierwszego znaku to 1, a nie 0 jak jest przyjęte w C/C++. Tak więc:
Dzięki! Od wczoraj zastanawiałem się dlaczego program
zawiesza się, gdy robię:
a = Text[0];
Już się wyjaśniło. :-)
Pozdrawiam
Krzysztof.
Temat: 1. Odczyt z pliku 2. TChart
Dnia 03-01-08 11:26, Użytkownik Przemo napisał:
Witam
Hej
1. Odczyt z pliku.
[chlast]
problem w tym ze pliki sa generowane przez rozne programy ktore roznie je
zaczynaja czasem jest tak ze sa dwie linie tekstu i za nimi liczby a czasem
linii z tekstem jest wiecej.
A nie możesz sprawdzić pierwszego znaku linii,
czy nie zawiera on cyfry ?
np.
int Czy(const char* Linia)
{
return atoi(&Linia[0]);
//dla błędu zwraca 0
}
Można również sprawdzić kolejne znaki, dla pewności,
ale którz generuje liczby zaczynające się od zera ;)
Pozdrawiam
?D
Temat: 1. Odczyt z pliku 2. TChart
"leinad" <leinadREM@master.plwrote:
| problem w tym ze pliki sa generowane przez rozne programy ktore roznie je
| zaczynaja czasem jest tak ze sa dwie linie tekstu i za nimi liczby a czasem
| linii z tekstem jest wiecej.
A nie możesz sprawdzić pierwszego znaku linii,
czy nie zawiera on cyfry ?
podpowiedz dobra, ale rozwiazanie do d...
np.
int Czy(const char* Linia)
{
return atoi(&Linia[0]);
//dla błędu zwraca 0
}
Można również sprawdzić kolejne znaki, dla pewności,
ale którz generuje liczby zaczynające się od zera ;)
ja, np. 0
lepiej zrobic:
#include <ctype.h
int czy_liczba (const char* wiersz)
{
return isdigit (*wiersz);
}
albo po prostu uzyc isdigit w programie
pzdr
szeryf
Temat: operacje na stringach
witam
mam napisac programik ktory pobiera ciag znakow, nastepnie pobiera jakies
slowo i wyswietla ten pierwszy ciag bez tego slowa np:
wprowadzam ciag: "ala ma kota a kot ma ale"
wprowadzam slowo: "ma"
i dostaje wynik: "ala kota a kot ale"
oto co juz napisalem
main()
{
char ciag[81],slowo[81],*wskaznik;
int i,k;
printf("wpisz ciag znakow
");
gets(ciag);
printf("wpisz slowo ktore usuniemy
");
gets(slowo);
wskaznik=strstr(ciag,slowo);
k=wskaznik-ciag; //liczy indeks pierwszego znaku szukanego
slowa
for(i=k;i<k+strlen(slowo);i++)
{
ciag[i]=' '; //tu chce zeby zastepowalo pustym znakiem nie
spacja
}
puts(ciag);
getch();
return 0;
}
i moje pytania jak wstawic pusty znak zamiast spacji(tak jak jest w
powyzszym kodzie) oraz jak wskazac na kolejne i nastepne te same slowa (w
moim przykladzie slowo "ma") ?
z gory dziekuje za pomoc
pozdrawiam
Temat: operacje na stringach
pistach wrote:
[ciach]
Zamien
wskaznik=strstr(ciag,slowo);
k=wskaznik-ciag; //liczy indeks pierwszego znaku
szukanego slowa
for(i=k;i<k+strlen(slowo);i++)
{
ciag[i]=' '; //tu chce zeby zastepowalo pustym znakiem nie
spacja
}
na
while ((wskaznik = strstr(ciag, slowo)) != NULL)
strcpy(wskaznik, wskaznik + strlen(slowo));
jako extra benefit, zalatwi Ci to wszystkie wystapienia slowa... :)
Temat: Aktualna pozycja kursora w CEdit/CRichEdit
Szukam metody na pobranie aktualnej pozycji kursora w polu edycyjnym
CRichEditCtrl
(w CEdit jest zapewnie analogicznie).
Niestety, metody ktore do tej pory znalazlem podaja aktualna pozycje tylko
wtedy,
gdy nie ma zadnego zaznaczenia. W momencie, gdy istnieje jakies zaznaczenie,
to podawana
jest pozycja pierwszego znaku w zaznaczeniu, co nie zawsze odpowiada
aktualnej pozycji
kursora.
Dziekuje za wszelkie sugestie.
Bartek
Temat: Banalne pytanie
Johnny wrote:
Johnny napisał(a):
| Dlaczego można zrobić tak
| const char* a="test";
| char b[5]="test";
| a nie można zrobić tak:
| const char* a="test";
| char b[5]=a;
| przecież typem literału jest także const char*
| Pozdrawiam
i dlaczego działa
*b=*a
i co to w ogóle oznacza? Jeju ;-)
const char* a="test";
char b[5]="test";
tutaj za a jest podstawiany wskaznik do pierwszego znaku ciagu "test"
ktory jest gdzies w pamieci, natomiast b jest inicjowane ciagiem "test".
a nie można zrobić tak:
const char* a="test";
char b[5]=a;
Tutaj chcialbys za b ktore jest wskaznikiem podstawic inny wskaznik,
ale nie mozesz bo b jest "specjlanym" wskanikiem - tablica - i nie
mozesz go zmieniac(mysl o nim ze jest constem)
pozdro
Temat: getche()
char odp;
...
odp=getche();
cin| zmienna;
w miejscu gdzie powinno sie wpisywac z klawiatury dane odczytywane przez cin
pojawia sie jako pierwszy znak, znak klawisza wcisnietego przy wczesniejszym
getche(), przypuszczam ze ma to zwiazek z bufforem klawiatury, mozno tego
jakos uniknac?
Chmm.. nie rozumiem po co ci to "getche()" przecież "cin | " oczekuje na
wpisywane znaki.
A jeśli nie chcesz czytać pierwszego znaku to przesuń wskażnik o jeden w
"zmienna".
Chyba, że masz jakąś pętlę i w chwili wduszenia klawiatury ma zareagować
na zdarzenie to radziłbym
użyć "kbhit()".
int getkey (char *znak)
{
char a,b;
a = b = 'x0';
if(kbhit())
{
a = getch();
if(a == 'x0') b = getch();
if(a == 0x1b) return(1); //ESC
if(a == 0x0d) return(2); //ENTER
}
}
Pozdrawiam
S.Z.
Temat: Czemu to jest zle???????
Użytkownik "havay" <ble@interia.plnapisał w
Czemu w Radio (char *) po odczytaniu danych z pliku nie ma linijki
zawartosci tego pliku (tak wlasciwie to nic nie ma, a powinno byc 7 znakow
1
A może pierwszym znakiem w pliku jest zero binarne?
Temat: Czemu to jest zle???????
A może pierwszym znakiem w pliku jest zero binarne?
nie
char ble[] = "asdas";
Radio = &ble[1];
a czy ma cos do tego ze pisze program WinAPI?
np. moze char ble[] ma znaki inne niz w standardzie win????
Temat: konwersja typów + problem ze wskaźnik ami (GTK+)
Cierpliwych fachowców od C i GTK+ proszę o pomoc.
Proszę równiez nie odsyłać mnie do podstaw C.
Może nie widac tego po pytaniach jakie zadaje, ale napisałem już
kilkadziesiąt małych programików i nie są mi obce podstawowe konstrukcje
języka C. Niestety wykazuję dość dużą oporność przy całkowitym
zrozumieniu i zastosowaniu wskaźników.
Właśnie dlatego aby połączyć przyjemne z pożytecznym znalazłem się w
okolicach GTK+.
Tyle na usprawiedliwienie a teraz: o co mi chodzi ?
Mam TextEntry, wprowadzam do niego string np. 234.34
Teraz potrzebuję zamienić zawartość TextEntry na liczbę float lub double
i podstawić pod zmienną X (typu float lub double).
To co wymodziłem:
Dorwałem coś takiego:
const gchar *gtk_entry_get_text();
Napisałem cos takiego:
float X;
[...]
X = (float) *(gtk_entry_get_text());
Ale pod X'em otrzymuję kod ascii pierwszego znaku za stringa (czyli dla
234,34 otrzymuję 50,00000).
X = gtk_entry_get_text(); daje błąd przy kompilacji, z którego wynika,
że próbuję przypisać pod zmienną typu float wskaźnik.
Co w takim razie zwraca
const gchar *gtk_entry_get_text();
?
Wskaźnik do stringa ?
Jeżeli tak to w jaki sposób wyłuskać ten string - zmienić go na float i
przypisać do X ?
Zczytać po jednym znaku i zrzutować na float ?
Ręce mi już opadają - pomóżcie proszę.
Temat: problem początkującego
Użytkownik cieron <cie@kki.net.plw wiadomości do grup dyskusyjnych
napisał:985915$be@h1.uw.edu.pl...
Witam
Mam problem z przypisaniem wartości do char nazwa[20]. Wszędzie
deklarowałem zmienną inicjującą napis jako tablicę 20 elementową. Podczas
kompilacji zmienna ta jednak (przynajmniej tak mi się wydaje) jest
traktowana jako o nieograniczonej wielkości char[] . Co jest źle w
poniższym
przykładzie?
class Telement{
private:
protected:
int ident;
char nazwa[20];
friend ostream &operator<<(ostream &out,Telement &rob);
public:
Telement(int ident=0,char napis[20]="");
~Telement(void);
};
Telement::Telement(int ident,char napis[20]):ident(ident){
nazwa=napis;
}
nazwa=nappis ......cannot convert from 'char []' to 'char [20]'
ciagow znakow nie mozesz przypisywac przez '='. do tego sluzy funkcja
strcpy.
zmienna nazwa jest wskaznikiem do pierwszego znaku ciagu - [20] sluzy jako
informacja dla kompilatora o tym ile pamieci ma zaalokowac dla ciagu o
adresie nazwa.
Temat: Czemu ten ci±g naków nie oblicza siê?
Mam taki kod:
std::string strCyfra = "25";
unsigned uCyfra = 3;
std::cout << strCyfra[0] + uCyfra << std::endl;
Dlaczego wyskakuje mi cyfra 53 , a nie cyfra 5 ? Przecież 2 + 3 = 5.
Bo dodajesz do siebie kod ASCII pierwszego znaku ze stringa strCyfra (czyli 48)
i liczbę 5. Przed zsumowaniem musisz przekonwertować ten znak na liczbę.
yamma
Temat: Czemu ten ci±g naków nie oblicza siê?
| Mam taki kod:
| std::string strCyfra = "25";
| unsigned uCyfra = 3;
| std::cout << strCyfra[0] + uCyfra << std::endl;
| Dlaczego wyskakuje mi cyfra 53 , a nie cyfra 5 ? Przecież 2 + 3 = 5.
Bo dodajesz do siebie kod ASCII pierwszego znaku ze stringa strCyfra (czyli
48) i liczbę 5. Przed zsumowaniem musisz przekonwertować ten znak na liczbę.
Ooops. Oczywiście kod ASCII cyfry 2, to 50 a drugą liczbą jest 3.
yamma
Temat: Problem z atof()...poczatkujacy!
Gdzie robie blad?
zatrzymywanie na kolejnym przecinku tez nie chce dzialac.
while(*ptr++!=',');
Gwiazdka jest "mocniejsza" od ++, więc w pętli zwiększasz kod
pierwszego znaku, a nie przechodzisz na kolejny znak w łańcuchu, jak
pewnie byś chciał..
do
{
x=atof(++prt);
}
while(*ptr!=',');
Jak wyżej. A swoją drogą, paskudnie nieczytelne, jak na ten rozmiar...
Pewnie stąd błędy.
Pozdrawiam
Temat: Problem z atof()...poczatkujacy!
Gwiazdka jest "mocniejsza" od ++, więc w pętli zwiększasz kod
pierwszego znaku, a nie przechodzisz na kolejny znak w łańcuchu, jak
pewnie byś chciał..
No wlasnie mi ten przecinek nie jest do niczego potzrebny chce tylko zeby na
miejsce w ktorym jest wskazywal wskaznik.
Tylko czemu po dojsciu do atof() wyskakuje z programu???
Uzywam standardowego TC.
a jesli nie zastosuje do...while to czy po ustawieniu na ten przecinek przed
liczba atof odczyta mi tylko do kolejnego przecinka czy caly lancuch do konca
lini???
Pozdrawiam
Temat: wyrażenia regul. Gdzie szukać
W artykule <pan.2004.11.30.10.19.04.796@e-mail.w.sygnaturce.pl
Mik napisał:
[...]
| Dziel po prostu wg #.
Dla mnie to są początki przyjaźni z językiem c, więc "po prostu" w
tej chwili nie istnieje dla mnie :-)
Bardzo po prostu robi się to w języku PERL. Rozważ.
Na intuicję w STL do C++ są jakieś gotowce.
Dzięki wielkie, zaczynam poszukiwania informacji na ten temat:-)
Po prostu = algorytm
1) Zaczynasz od pierwszego znaku
2) kopiujesz pojednym do nowego bufora
2a) Jeśli trafiłeś na znak "#" to wypełniłeś tennnowy bufor i jego
zawartośc coś dla ciebie znaczy.
3) trafiłeś na konieć; jest analogicznie jak 2a plus koniec zabawy
KAcper
Przeglądaj wszystkie wypowiedzi z tego tematuTemat: wyrażenia regul. Gdzie szukać
Dnia Tue, 30 Nov 2004 10:37:39 +0000, Kacper Perschke napisał(a):
Po prostu = algorytm
1) Zaczynasz od pierwszego znaku
2) kopiujesz pojednym do nowego bufora 2a) Jeśli trafiłeś na znak "#"
to wypełniłeś tennnowy bufor i jego
zawartośc coś dla ciebie znaczy.
3) trafiłeś na konieć; jest analogicznie jak 2a plus koniec zabawy
O ciup... to chyba jest z powodu mojego przemęczenia.. fgetc :-) Proste,
jak budowa cepa.. jak to się mówi :)
dzięki wielkie !!
pozdrawiam Mik
Temat: vc++ 6,0 nie typowe otwieranie i zapisywanie
<lynx@wp.plwrote in message
a to co otworze to do jekiej zmiennej moge przypisac?? bo CString połowe
gubi
Spokojnie możesz kopiować dane do dowolnego bufora pamięci.
Na przykład takiego alokowanego przez malloc.
A CString zapewne ucina zawartość do pierwszego znaku ' '.
Stach
Temat: Przyjmowanie danych z wiersza polecen
q@o2.pl wrote:
| if(argv[2]==" -h"||argv[2]==" --help")
Usilujesz porownac char z const char*
Nie. argv to tablica wskaźników. Każdy jej element to "const char *",
czyli argv[0] jest wskaźnikiem itp. Natomiast argv[0][0] jest pierwszym
znakiem pierwszego napisu w tablicu (ścieżka programu). Powyżej
porównywane są nie napisy, tylko wskaźniki i wynik takiego porównania
zawsze będzie false.
B.
Temat: PYTANIE
Zalozmy ze mam jakis string w C++
a[10] = "Kuba";
w jaki sposob odczytac wartosc ASCI
pierwszego znaku?
Dzieki za pomoc:
KUBA
Dla pierwszego znaku: char znak = a[1]; // wyjdzie 'u'
Dla zerowego znaku: char znak = a[0]; // a tu 'K'
Lub tez:
char znak = *a+1;
char znak = *a;
Juntek
Temat: PYTANIE
Dla pierwszego znaku: char znak = a[1]; // wyjdzie 'u'
Dla zerowego znaku: char znak = a[0]; // a tu 'K'
Lub tez:
char znak = *a+1;
char znak = *a;
Tak, to jest jasne, ale chodzi mi o to
aby po cout<<znak; otrzymac nie
literke "K" tylko jej kod ASCI.
Sory za nieprecyzyjne pytanie.
- kuba -
Temat: a mialo byc proste
| o to naisalem:
| #include <stdio.h
| main(int argc, char *argv[])
| {
| int i=1;
| char c[20];
| int x=argv[1];
^^^^^^^^^^^^
tu robisz fajny numer - chcesz przypisac do liczby int stringa ktory
jest w tablicy argumentow - czyli tak naprawde wpisujesz do x
numer znaku ASCII pierwszego znaku z tego stringa, sprobuj
^^^^^^^^^^^^^^^^
...ze sie tylko wtrącę, kolega chciał tutaj wpisac do x _adres_ pierwszego
znaku stringa (jesli w ogóle taki istnieje)
przekonwertowac najpierw stringa na liczbe - funkcja atoi()
popieram :]
[cut]
Temat: a mialo byc proste
Użytkownik "DaViD" <mda@icpnet.plnapisał w
...ze sie tylko wtrącę, kolega chciał tutaj wpisac do x _adres_ pierwszego
znaku stringa (jesli w ogóle taki istnieje)
| przekonwertowac najpierw stringa na liczbe - funkcja atoi()
Ale dopiero po sprawdzeniu ilości parametrów!
Strona 3 z 4 • Zostało wyszukane 315 wypowiedzi • 1, 2, 3, 4