1. |
Perl (mind) |
38 sor |
(cikkei) |
2. |
re:Borland C++ pointer windows alatt (mind) |
44 sor |
(cikkei) |
3. |
Re: Borland C++ pointer windows alatt (mind) |
21 sor |
(cikkei) |
4. |
Borland C++ pointer windows alatt (mind) |
83 sor |
(cikkei) |
5. |
re: Borland C++ pointer windows alatt (mind) |
34 sor |
(cikkei) |
6. |
Re: *** HIX CODER *** #1051 (mind) |
42 sor |
(cikkei) |
7. |
help (mind) |
7 sor |
(cikkei) |
|
+ - | Perl (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hi all!
Van egy kis probelmam.
Perlben szeretnem kiszedni a szerveren levo mailbox tartalmat. Eloszor
csak a fejleceket, majd a tobbit. A lenyeg, hogy elkuldom a parancsot,
amivel kiszedi egy level fejlecet, ezt beleteszem egy sima valtozoba.
Es itt van a problema: mivel ez egy for ciklus, egymas utan beolvasok
tegyuk fel 3 level fejlecet. A harmadik fejlecet nem olvassa be
rendesen, vagy nem irja ki, csak kb. felet. mindenkepp lemarad valami.
De ha beolvasok 4 fejlecet, akkor a harmadik mar teljes egeszeben
benne van. Ellenben a 4-bol hianyzik valami. Ez eleg furcsa, hisz egy
for ciklus van, hogyhogy az elso 3-at beolvassa, a 4-ediket meg nem? A
POP3 szerver tuttira jol ad vissza mindent, azzal nincs gond.
Masik gond, egy fejlecen belul:
az egesz fejlec egy $header valtozoban van. Tehat van benne ujsor
karakter is. Mikor siman print-el kiiratom a $header-t, kiirja a
sorokat, de van mikor egy sor kozepetol uj sorba kezdi, ezt nem ertem.
Pl:
>>>
To: "Gergely
Imre" >
Subject: RE: Hmm...
Date: Mon, 9 Oct 2000 06:52:00 +0200
>>>
Itt a To mezoben biztos nincs semmi ujsor karakter a Gergely es Imre
szavak kozott, miert kezdi ujsorban??
Nem tudom, eleg vilagos voltam-e?
Pliiz maganba is, mert nem vagyok a listan.
Thanx
--
GImre
-> ICQ# 86297366
-> www.nextra.ro/~gimre
|
+ - | re:Borland C++ pointer windows alatt (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali!
Nehany el nem hanyagolhato sulyos hibat vetettel aminek nem sok koze
van a Windows-hoz. A bekuldott programodban egy C++-os elem sincs. A
program mezei C-forditoval is legalabb 5-figyelmeztetest kuld.
C++-alatt le sem fordul.
1. az "int" merete gepfuggo, de semmikeppen nem keverendo a "char"-ral
a "char1"-nel. Most C-alatt az int tombbe befer a 8-karakteres szoveg,
de nem tekintheto jo megoldasnak.
2. a "*pt" valoszinoleg szinten "char *" akart lenni.
3. a "char1[8]" figyelembe veve, hogy o nem "int" rovidre van felveve,
mert az "strcpy"-nel hasznal szoveg szarokarakteret is figylembe kell
venni.
4. az strcpy egyik parametere sem lehet "int*", mindketto "char*",
tehat a C++ fordito nem futhatott le. A C-fordito is csak
figyelmeztetessel.
5. a "pt = &char1" pedig "&" irando.
6. a "printf"-ben pedig tobb egymasnak ellentmondo parametert irtal
le. Ha karakterenkent kell kiirni, akkor a "10s" mi? Ha pedig "10s"
akkor mi a "*pt" amit ugye "int*"-kent deklaraltal?
7. a ciklus zarofeltetele ertekadas "i = 7" ami jelen esetben
ertelmetlen, vegtelen ciklust okoz. Jobb lenne "char1[i]", vagy "i <
8"
main(){
char char1[9], *pt;
int i;
strcpy(char1, "computer");
pt = char1; // bar felesleges, mert char1-bol is ki lehet irni
for (i=0;pt[i];i++)
printf("%c", pt[i]);
}
>main()
>{
>int char1[8],*pt,i;
>strcpy(char1,"computer");
> pt = &char1;
> for (i = 0; i = 7; i++)
> printf("%10s",*pt);
>}
|
+ - | Re: Borland C++ pointer windows alatt (mind) |
VÁLASZ |
Feladó: (cikkei)
|
>
>main()
>{
>int char1[8],*pt,i;
>strcpy(char1,"computer");
> pt = &char1;
> for (i = 0; i = 7; i++)
> printf("%10s",*pt);
>}
Hali!
Szerinte a 'printf' fuggveny parametereben a '*pt' a nem jo, a
'printf' fuggveny a parametereben egy mutatot var, igy pedig azt az
erteket adod at mutatokent ami a 'pt' pointer altal mutatott teruleten
van, ami meg tobb mint valoszinu hogy illetektelen teruletre mutat,
tehat access viola ....
szerintem igy ird: printf("%10s", pt);
Doma
|
+ - | Borland C++ pointer windows alatt (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> a feladat:
> Definialj egy tombot es hasznalt az strcpy-t, ahhoz, hogy
> hozzarendelj egy stringet. Irasd ki a stringet a kepernyore ugy,
> hogy egyszerre csak egy karaktert irjon ki. (by using a loop of
> course) Szoval ciklussal kell megoldani. (use pointer for the loop)
> Szoval hasznaljak pointert hozza...
> Inicializald a pointert az elso elemhez es hasznald a dupla plusz
> jelet (++), hogy noveld a pointert. Hasznalj _kulon_ integer
> valtozot a kiirando karakterek szamolasahoz.
>
> main()
> {
> int char1[8],*pt,i;
> strcpy(char1,"computer");
> pt = &char1;
> for (i = 0; i = 7; i++)
> printf("%10s",*pt);
> }
>
> Ez igy tuti rossz (nem azt csinalna amit kene)
Hello Tamas!
(Elso: nem ismerem a borland 5.5-ot, de remelem jo van bealitva hogy
"console" programmont keszit windows ala)
Van egy par problema, vegyuk egyenkent:
1. char1[8], 8 int hosszu tomb, es strcpy-zol bele "computer"-t. A
"computer" be 8 betu van (a null vegzo NELKUL) igy teli teszi a
tombot, es utana a 9-ik tomb helyre tesz egy 0-at (mi eppen a *pt).
2. Ez magaba meg nem baj, mert a *pt van utana a stacken, amit atirsz
a tomb cimevel.
A nagyobb baj hogy a char1-nek utana nincs 0 vegzoje.
> for (i = 0; i = 7; i++)
3. Ez a hiba nagyon gyakran tortenik kezdokkel (neha meg nem kezdokkel
is ;)) az osszehasonlitas (==) helyett = van, es mivel i = 7 mindig
"TRUE", igy a ciklus soha nem fejezodik be....
4. Meg ha ezeket kijavitod akkor se jo, mivel feladat leirasa utan
betunkent kene kiirni...
Ki lehet javitani:
main()
{
int char1[9],*pt,i;
strcpy(char1,"computer");
pt = char1;
for (i = 0; i >= 8; i++)
printf("%c",*pt++);
}
De jobb ha megtanulod hogy "vedekezve" programmozzal, jobb ellenorzni
dolgokat....
en valahogy igy irnam en (a feladat utasitasai szerint):
#define MAXLEN 32
void main(int argc, char *argv[])
{
const char string[] = "computer";
char char1[MAXLEN+1];
char *pt = char1;
int i = strlen(string);
if (i > MAXLEN)
{
printf("String too long\n");
exit(-1);
}
strcpy(char1, string);
for (; i; i--)
printf("%c", *pt++);
}
Igy eltunnek a "magic" szamok, es a strcpy nem tud "ramaszni" a tobbi
valtozora.
Sincerely,
Attila Voros, Chief Engineer, ISDgames
|
+ - | re: Borland C++ pointer windows alatt (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Na, most itt a rossz progi:
main()
{
int char1[8],*pt,i;
strcpy(char1,"computer"); //char1 -nek char* nak kene felvenned,
//ha strignet akarsz benne tartani (ez
//nem hiba, de attekinthetobb aprogram)
//ha char* char1 akkor char1[9] -nek
//kene lenni mert a "computer" vegen
//van egy 0 ertek is -is
pt = &char1; //neked nem a char1 -cimere van
//szukseged hanem a char1-ben tarolt
//ertekre, ami a "computer" stringre
//mutat
for (i = 0; i = 7; i++)
printf("%10s",*pt); //neked itt nem stringet kene kiirnod
//hanem char-t...
//es nem novelted a pt -valtozot...
}
alabbiakban leirom a programod javitott valtozatat:
main()
{
int i;
char char1[8+1],*pt;
strcpy(char1,"computer");
pt=char1;
for(i=0; i<=7; i++)
printf("%c",*pt++);
}
|
+ - | Re: *** HIX CODER *** #1051 (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello ,
main()
{
int char1[8],*pt,i;
// ez int tipusu tomb es pointer
// elemek merete gepiszo pl : 2|4 byte
strcpy(char1,"computer");
// elemek egysege 1 byte
// es zaro 0karaktert hova tenne?
pt = &char1;
// int* = int* = ez jo
for (i = 0; i = 7; i++)
printf("%10s",*pt);
// ha jo lenne 10x ki irna egymas moge a stringet
// a printf("%s", char* ) var egy char*-ot
// es addig ir ki amig egy '\0' nem talal
***********************************************
probald ki ezt
***********************************************
main()
{
char *pt, tomb[9] ;
pt = (char *)strcpy( tomb, "computer" );
while( *(pt) ) {
putchar( *(pt++) );
}
}
--
Csasz from
hormoSapiens mailto:
|
+ - | help (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hi Coders!
Tud valaki Visual Basic, Visual C++ ill. Delphi levlistat vagy ami
programozassal foglalkozik, a HIX Coderen kivul (lehet angol nyelvu
is.)
HeCtor
|
|