- Apple notebookok
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- AMD vs. INTEL vs. NVIDIA
- Hivatalosan is elkészült az NVIDIA App
- Azonnali alaplapos kérdések órája
- Vezetékes FEJhallgatók
- Milyen egeret válasszak?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Házimozi belépő szinten
Új hozzászólás Aktív témák
-
brsd
csendes tag
-
klayton#1
tag
hello, egy ujabb problemam lenne, a következő feladat megoldásában:
"Exercise 2-4. Write an alternative version of squeeze(s1,s2) that deletes each character in
s1 that matches any character in the string s2."Az én megoldásom a képen látható, viszont valamiért "segmentation fault" hibaüzenetet ír ha futtatom. valaki tudna esetleg segíteni, hogy kéne kijavítani?
-
Jester01
veterán
válasz klayton#1 #2106 üzenetére
1) legközelebb lehetőleg szövegesen másold be a kódot mert én ugyan nem fogom begépelni, hogy kipróbálhassam
2) a belső ciklusod minden egyes különbségre másol egyet. Először összehasonlítja az e-t az e-vel, stimmel, nem történik semmi. Aztán az e-t az l-el, nem stimmel, másolja az e betűt. Jön az m, nem stimmel, másol még egy e betűt. És így tovább. A segfault azért lesz, mert hosszabb lesz a kimenet mint az eredeti string. Úgy kellene, hogy a belső ciklus csak megállapítja, hogy benne van-e az adott betű a másik tömbben, és utána egyszer másolja ha szükséges.Jester
-
vamzi
senior tag
Sziasztok!
A segítségeteket szeretném kérni, a következő problémámhoz:
Hogyan lehet azt C-ben megvalósítani, hogy a programom az adott weboldal forráskódját lementse txt-be?
Nem a kész megoldást kérem(azért egy példaprogramot nem vennék rossz néven ), hanem iránymutatást, doksikat, olvasmányokat, szakirodalmat. A nyelve angol vagy magyar lehet, utóbbi előny, de előbbi is megfelel.
De ha valaki fejből leírja, akkor elég nekem pszeudo nyelven isElőre is köszönöm!
-
Gyuri16
senior tag
eloszor meg kell tanulnod hogyan tudsz halozaton komunikalni c-bol. ehhez a kulcsszo a socket. en eddig csak linuxon programoztam ilyet, de gondolom elegge hasonlo lesz windowson is. kezdetnek par link:
[link]
[link]
winsock (windowsos api):
[link]ha ez megy akkor a http protokolt kell elsajatitani. ebbol neked leginkabb a get method kell. (ezt legjobb ugy tanulni, hogy telnettel csatlakozol a kivant oldal 80-as portjahoz, es elkuldod neki a keresed, es nezed milyen valaszt kapsz)
a program igy fog kinezni:
csatlakozol a kivant weboldal 80-as portjahoz
elkuldod a http requestet, ami kb igy nez ki:GET /index.html HTTP/1.1
Host: www.example.comvalaszkent kapsz egy http headert, ebbol kihamozod a hibakodot. ha ez 200 akkor jo, es a header utan maga a dokumentum van, ha mas akkor valami hiba van (ami nem feltetlenul rossz, "hiba" lehet atiranyitas is, ezeket fel kell dolgozni valahogy)
(ha csak a forraskod kell, akkor ennyi, ha a tobbi fajl is - css, kepek, scriptek - akkor azokat hasonlo modon http-vel lekered)egyelore ennyi, ha gondolod nezz utana ezeknek, es ha valami nem vilagos nyugodtan ird ide a konkret kerdeseket.
Nem vagyok egoista, csak uborkagyalu!
-
vamzi
senior tag
válasz Gyuri16 #2110 üzenetére
Köszönöm szépen, ezen tényleg el tudok indulni. Az első linkben szereplő könyvnek van magyar változata is és ez sokat lendít a dolgon. Úgy érzem a linux-os változatot fogom benyakalni, úgy sem áll tőlem távol.
Most már van annyi olvasnivalóm, hogy egy kis időre eltűnök, és majd jövök mikor nekiállok a tényleges kódot összerakni.
Köszönöm még egyszer!
További szép napot.
-
Jester01
veterán
-
Juhtúró
tag
sziasztok,
tud vki egyszerű megoldást, gccben itoa függvény pótlására?http://linuxtutorialok.blogspot.com/
-
PetX
aktív tag
Sziasztok!
Fejlesztőt keresek.
Leírás:
Adott egy központi rendszer (PC+GSM modul) és kliensként PLC egységek.
Ez egy adatgyűjtő rendszer, az állapotváltozásokat SMS-ben küldi a központi rendszernek(KR).
A KR SQL táblában letárolja az adatokat, és mint riasztás az adott telefonra tovább küldi riasztás képpen. Kapcsolódik hozzá egy PHP-s alapú webes felület a LOG-ok illetve események manuális listázásához, új PLC-s egységek/riasztások felvitelére.
A KR-re írt program, C-ben íródott a forráskód is megvan, de sajnos nincs a programnak megfelelő hibakezelése. Linux környezet (SuSE).
Mivel a SMS kódtábla adott és nem akarjuk az összes PLC-t is újra programozni így a régit szükséges használni.Nagy vonalakban erről lenne szó, ha van ilyen ismerősötök vagy cég akit tudtok ajánlani, ne tartsátok vissza!
Akit érdekel Írjon PÜ-t.Félre a viccet, komolyan szükségem lenne legalább 2 fejlesztőre árajánlat stb.
Minek iszol és vezetsz, ha szívhatsz és repülhetsz!?
-
CPT.Pirk
Jómunkásember
Van egy problémám.
Üres stringet kell detektálnom C-ben. A probléma, hogy kvázi függvénybe kell ezt megcsinálni, hogy máshonnan kapjon stringet, szal nem előre a kódba írt stringet kell vizsgálni.
Szóval valahonnan jön a script, ráadásul még pointerezni is kell. Ötletek?Sokat próbáltam a pointereket, de nem akar menni a dolog. Pl. próbáltam kiírni a pointer által mutatott string elemeit, de csak számokat kapok.
Van pl. az argc *argv-s argumentum bekérés, hogy tudom megcsinálni, hogy átkerüljön a tartalma egy sima tömbbe, amivel lehet dolgozni?
Meg ilyen alap kérdések, plusz pár dolog, amiből még kérdezni sem tudok.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2119 üzenetére
a gond az hogy nem ertem mit szeretnel
az *argv[] mar eleve egy tomb. ha masolni szeretnel, hasznalhatod cikluson belul az strcpy fuggvenyt
ha parameterkent akarod atadni, akkor siman char* a tipus es kesz
ha azt akarod megnezni hogy ures-e, az a legegyszerubb
pl:bool isEmpty(char* s)
{
return !*s;
vagy
return s[0] == 0; (igy olvashatobb, de kevesbe helytakarekos, es foleg kevesbe 'geek' :D)
} -
CPT.Pirk
Jómunkásember
Ilyesmire gondolok, de még tudnia kel azt, hogy a space és tabulátor esetén is ürse scriptet ad vissza, azok esetében viszont akkor más karakter nem lehet. Szal ne bonyolítsuk, ha csak egy karakteres a string, akkor meg kellene nézni, hogy spacve v. tab van-e, vagy ha egyik sincs, akkor meg amit te írtál. Ezeket kellene egybegyúrni.
Viszont egy kis magyarázatot kérnék, én legalább egy IF függvénnyel gondolkodtam eddig.
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2121 üzenetére
ha space meg tab is uresnek szamit, akkor kicsit valtozik a logika, vegig kell iteralni a stringen, es ha olyan karaktert talalsz ami a fentiek egyike sem, akkor nem ures
pl:bool isempty(char *s)
{
char *p;
for (p=s; *p; ++p)
if (*p != ' ' && *p != '\t')
return false;
return true;
}ki nem probaltam, de igy ranezesre jonak kell lennie
a *s ugye a karakter amire az 's' valtozo mutat (jelen esetben, mivel a pointer es a tomb C-ben ugyanaz, a string elso karaktere)
ha ez a string veget jelzo 0, akkor nyilvan ures, tehat a !*s igaz lesz (ez ugyanaz mint a *s == 0)de a space/tab miatt ez ugyebar mar nem jatszik
-
CPT.Pirk
Jómunkásember
Bedobva a fordítóba, már rögtön a bool után hiányol valamit.
Ha jól értem:
bool isempty(char *s) - itt az *s lesz az a string, amit vizsgálunk.char *p; -csinál egy pointert. De ez most mutat valamire? Vagy csak üres tömb?
for (p=s; *p; ++p) - itt a kezdőérték mi? A p megkapja az s elemeit? A feltétel meg az hogy amíg van eleme, és addig a ++p lépteti az elemeket?
if (*p != ' ' && *p != '\t') - itt a space és a tab vizsgálat van, ez tiszta.
Hogyan tudnám összehozni a dolgot mondjuk egy scanf-el? Az argv dolog szerintem itt nm jó, mert annak alapból az első eleme a file neve. A t. tanárúr nem szereti a scanfet, de kipróbálni jó lenne.
Régen volt a C, lua-ban csináltam pár dolgot az elmúlt 2 évben, az sokkal egyszerűbbnek tűnik egyenlőre.
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2123 üzenetére
ja igen, a bool nem C-s tipus (nagyon regota C++ -ozok ). a bool-t csereld ki int-re, a false-t 0-ra, a true-t meg 1-re es jo lesz
char *p; -csinál egy pointert. De ez most mutat valamire? Vagy csak üres tömb?
mivel erteket nem adtal neki, 'sehova' nem mutat, pontosabban de, csak teljesen random helyre (igy ha pl irni akarsz oda, akkor jo esellyel egybol segfaultot kapsz)for (p=s; *p; ++p) - itt a kezdőérték mi? A p megkapja az s elemeit? A feltétel meg az hogy amíg van eleme, és addig a ++p lépteti az elemeket?
a p ugyanoda fog mutatni ahova az s, vagyis a string elso karakterere
a *p azt a karaktert jelenti, ahova a p mutat. mivel C-ben a 0 hamis, a nem 0 pedig igaz, ez a feltetel akkor teljesul, ha *p nem 0. vagyis ha elertuk a string veget jelzo 0-t, a feltetel hamis lesz, es a ciklusnak vegea fuggvenynek semmi koze a scanf-hez, olyan stringgel hivod meg amilyennel akarod, ez nyilvan lehet egy scanf-el bekert is
amugy a scanf valoban az ordog muve, ne hasznald nincs pl semmi ellenorzes a hosszra, igy ha kicsi tombot foglalsz neki akkor egybol el is crashel a programod. azonkivul a whitespace karaktereket (pl space) mezoelvalasztonak fogja fel, tehat ha space-t is tartalmazo stringet akarsz beolvasni, akkor nem mesz vele sokraerre szokas irni ellenorzott getline fuggvenyt, Gyorben pl. Bauer is 'kiadott' egyet, amit nyugodtan lehet hasznalni vizsgan is
-
CPT.Pirk
Jómunkásember
No, ellestem pár dolgot órán, meg elvileg csak annyit kell csinálnom, hogy üres-e a string, mert a tab, space vizsgálat már a köv. srác dolga, aki az strIsBlank-et írja.
Órán eddig jutottam el:
int main ()
{
char test[]="abc";
strIsEmpty(test);
return 0;
}
int strIsEmpty(const char *str)
{
while(str)
if(!*str || !str)
printf("ures string");
return 1;
printf("nem ures a string");
}Nem volt időm lejavítani, majd holnap megcsinálom. A lényeg az, hogy be kell mutatni a működést is, ezt ott a mainben egy string értékadással oldottam meg. Azzal volt bajom főleg, hogy hogyan jut át a string, pointer egyik függvényből a másikba. Lua-ban sokkal egyszerűbb volt leírni olyasmit.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2125 üzenetére
a parameteratadas pont ugy tortenik mint Lua-ban meg a programozasi nyelvek tulnyomo reszeben: a fuggvenynev utani zarojelbe irod igaz, a C tipusos nyelv, tehat azt is meg kell adni
viszont amit irsz, nem igazan jo
a while ciklusod addig fut, amig a string elso karaktere nem a lezaro nulla, viszont mivel a pointert nem valtoztatod, mindig ugyanoda (az elso karakterre) mutat
raadasul nem hasznaltal { } -t, igy ures stringnel a vegtelensegig azt fogja irogatni hogy ures
egyedul akkor fog visszaterni, ha NULL pointert adsz at neki, mivel akkor mar a while-ba sem fut bele, viszont olyankor meg fix 1-et ad visszacsak azt nem ertem, miert nem probalod ki a programot? akkor egybol kiderulne hogy nem jo...
-
CPT.Pirk
Jómunkásember
Igen, while-nál kimaradt, a pointerrel meg kezdek valamit. Az óra végén csak egy fordításra volt időm, akkor nem adott hibát, de végtelen ciklus volt, mert rossz feltételt írtam a whilehoz. Per pill itt sem tudom lefuttatni, mert nem tudok átlépni a linuxra egy fontos feltöltés miatt, aztán itt a w7 x64-en csak a cygwin van fent, de az meg amit lefordít, az exe hiányol egy nem létező 64 bites dll-t a cygwinből. Van más alternatíva, de nem akarok win alatt progni, majd holnap megcsinálom Mint alatt, csak bedobtam a félkész kódot, hogy kb. mi a terv.
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
!wannabe
tag
Sziasztok,
Van egy kódom itt alant. (Nem én írtam csak átalakítottam)
Q.: Segmentation fault-al elszáll amikor új elemet adok hozzá, miért
Előre is köszi a segítséget.
[ Szerkesztve ]
-
Gyuri16
senior tag
válasz !wannabe #2128 üzenetére
az add fuggvenyedben van a hiba a
end->next = new;
sornal. az elso elem hozzaadasanal az end NULL, ezert a segfault.valami ilyet javaslok:
void add( struct node *new ) /* adding to end of list */
{
if( head == NULL ) /* if there are no nodes in list, then */
head = new; /* set head to this new node */
if (end != NULL) // megnezzuk van e mar utolso elem
end->next = new; /* link in the new node to the end of the list */
new->next = NULL; /* set next field to signify the end of list */
end = new; /* adjust end to point to the last node */
}Nem vagyok egoista, csak uborkagyalu!
-
CPT.Pirk
Jómunkásember
No, végre összeállt a dolog. Miután végiggondoltam, rájöttem h. nem is kell nekem végiglépkedni a stringen, felesleges az egész while cucc bele, mert az már másnak a feladata, hogy akkor is üres stringet adjon vissza, ha space, tab van benne, nekem csak simán üres stringet kell keresnem. Beírva valamit a test[] mögé, frankón eldönti, hogy mi a helyzet. Szóval szerintem jó így.
#include <stdio.h>
int main ()
{
char test[]="";
strIsEmpty(test);
return 0;
}
int strIsEmpty(const char *str)
{
if(!*str || !str){
printf("A string ures\n");
return 1;
}
printf("Nem ures a string\n");
}Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2131 üzenetére
na igy mar alakul
ket dolog: az if-nel megforditanam a ket feltetelt, tehat igy: if(!str || !*str), ugyanis igy eloszor a NULL pointert ellenorzod le, csak utana azt, ahova mutat, de a mostani megoldas is teljesen joa masik mar kicsit csunyabb: a fuggvenyednek csak akkor van visszateresi erteke, ha ures a string, kellene a vegere egy return 0; igy ha nem ures, akkor 0-t ad vissza (erre elvileg a fordito figyelmeztetett is teged!)
-
CPT.Pirk
Jómunkásember
Igen, jó h. szóltál a return 0; miatt, tényleg hiányzott, valamit mindig elfelejtek.
Egyébként a gcc nem szólt a return hiánya miatt és futási problémát sem tapasztaltam.Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
-
CPT.Pirk
Jómunkásember
No, talált is valamit:
gcc -Wall strempty.c
strempty.c: In function ‘main’:
strempty.c:6: warning: implicit declaration of function ‘strIsEmpty’Az volt a gondja, hogy előbb volt a main rész, mint a benne hivatkozott strIsEmpty.
[ Szerkesztve ]
Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)
-
doc
nagyúr
válasz CPT.Pirk #2135 üzenetére
igen, ezert szoktak a main-t legalulra tenni (illetve a hasznalt fv-eket kulon file-okba)
de elkerulheted ezt az uzenetet, ha meg a main elott deklaralod a fuggvenyedet, igy pl. nem kapsz egy warningot sem:1 #include <stdio.h>
2
3 int strIsEmpty(const char *str);
4
5 int main ()
- 6 {
| 7 char test[]="";
| 8 strIsEmpty(test);
| 9 return 0;
| 10 }
11
12 int strIsEmpty(const char *str)
- 13 {
- 14 if(!*str || !str){
2 15 printf("A string ures\n");
2 16 return 1;
2 17 }
| 18 printf("Nem ures a string\n");
| 19 return 0;
| 20 } -
Retekegér
HARDVERAPRÓD
Hali!
Tudnátok ajánlani értelmes feladtagyűjteményt (akár nyomtatott, akár online verziót)?
Ezalatt azt értem, hogy jó lenne minél több gyakorló feladat egy-egy témakörhöz.<< Heimdal >>
-
Karma
félisten
válasz Retekegér #2138 üzenetére
Milyen szinten? Alapozásnak szerintem ez egy elég jól sikerült könyv-kettős. Az első kötet végig alap-algoritmusokat gyakoroltat, a másodiknál már gondolkozni is kell néha (Meg nem is tetszett annyira.)
Ha valami higher level kéne, arra már nem tudok mit mondani.
Mondjuk valami webbel kapcsolat feladatsorra én is kíváncsi lennék, pl. amin lehetne GWT-t vagy Vaadint gyakorolni.
[ Szerkesztve ]
“All nothings are not equal.”
-
SDA
csendes tag
Hali!
Egy kis segítségre lenne szükségem! Cprogból van egy csomó feladat, string kezelő util-t kell csinálni, és fönnakadtam a középre igazításnál... strCenter()... kerestem és találtam is a neten mintákat, de az egésznek a működését nem értem. Esetleg valaki letudná írni nekem, hogy PC szintén itt minek kell történnie, esetleg egy kezdő lökés is jól jönne.
Köszi!
-
doc
nagyúr
pontosan mi a feladat? adott egy string meg egy szelesseg, es jobbrol es balrol space-ekkel kell feltolteni amig el nem eri a megadott meretet? mert akkor csak annyit kell csinalni ami maga a feladat: az elejere teszel egy space-t, ha nem erte el a kivant szelesseget akkor a vegere is, ha igy sem, akkor kezded elolrol
vagy egy szebb megoldas: a megadott szelesseg es a string hosszanak kulonbseget elosztod kettovel, es az elejere meg a vegere is ennyi space-t illesztesz (paratlan eseten meg a vegere meg egyet)
-
Peter Kiss
őstag
Szar a feladat, mi lenne. középre igazítani csak valamihez képest lehet, amíg ez nincs tisztázva, kár vele foglalkozni. Esetleg le kell kérdezni, mennyi hely áll rendelkezésre (fogalmam sincs, hogyan kell).
Emellett elég csak az elejére szóközöket rakni. Amire még érdemes lehet figyelni, az a fél betűnyi hely problémája. Kerekítésre ötlet:
int space_count;
double space;
space_count = ( int ) ( ( (line - strlen) / 2 ) + 0.5);A line az a sor hossza, az strlen pedig a szöveg hossza.
-
doc
nagyúr
válasz Peter Kiss #2148 üzenetére
esetleg lehet hogy a kepernyo szelessegehez kepest kell igazitani?
jogos, a vegere nem feltetlenul kell space (ha szines hatteret meg egyeb marhasagokat akarsz, akkor jol johet, bar azt meg mashogy illik megoldani) -
Peter Kiss
őstag
Igen, a konzolablak méretéhez képest kellhet igazítani. Ilyet leltem:
#include <sys/ioctl.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
struct winsize ws;
if (ioctl(0,TIOCGWINSZ,&ws)!=0) {
fprintf(stderr,"TIOCGWINSZ:%s\n",strerror(errno));
exit(1);
}
printf("row=%d, col=%d, xpixel=%d, ypixel=%d\n",
ws.ws_row,ws.ws_col,ws.ws_xpixel,ws.ws_ypixel);
return 0;
}[ Szerkesztve ]
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- BestBuy topik
- Háztartási gépek
- Ingyenes vagy akciós szoftverek
- Apple notebookok
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Ingyen kellene, de tegnapra
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Samsung Galaxy A54 - türelemjáték
- Honor 200 Pro - mobilportré
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- További aktív témák...
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest