incompatible types in assignment
35 отговора
1085 прегледа
Re: Леле, великите програмисти
ми покрай такива нафукани перковци се научих да играя мръсно. иначе те правят на две стотинки, без дори да разбират за какво приказват.
ианче решението за дължината е добро, с една малка забележка. при горната постановка трябва да е
if (count > 24) count = 24;
иначе нулевия терминатор ще излезе извън границите на масива.
stoj, ta gledaj
ианче решението за дължината е добро, с една малка забележка. при горната постановка трябва да е
if (count > 24) count = 24;
иначе нулевия терминатор ще излезе извън границите на масива.
stoj, ta gledaj
Re: incompatible types in assignment
manski, overrun-a idva ot gets-a, ne ot strcpy, a strncpy ne mozhe da pomogne v sluchaq. Izobshto strncpy se konkurira s gets kato edna ot nai-opasnite i bezpolezni funkcii v libc.
Re: Леле, великите програмисти
Tova e po princip OK, makar che ako se zamislish ste vidish che ima niakolko problema.
1. Ne e nuzno da se smiata duljinata na stringa tova ti e dopulnitelna iteracia ne che ste e koi znae kolko po bavno, no vse pak. Vij varianta na Al Kohone po dolu koito e nai-dobria spored men makar che az bih mahnal if-a.
2. Kakto si go napravil s broiach koito e int pri mashini kudeto int e 16 bita primerno, niama da raboti pravilno sus stringove s duljina po goliama ot dva baita.
1. Ne e nuzno da se smiata duljinata na stringa tova ti e dopulnitelna iteracia ne che ste e koi znae kolko po bavno, no vse pak. Vij varianta na Al Kohone po dolu koito e nai-dobria spored men makar che az bih mahnal if-a.
2. Kakto si go napravil s broiach koito e int pri mashini kudeto int e 16 bita primerno, niama da raboti pravilno sus stringove s duljina po goliama ot dva baita.
Re: Леле, великите програмисти
Imah predvid varianta na Al Kohone koito e po-gore, a ne po-dolu :)))
Re: Леле, великите програмисти
Mejdu drugoto dobre e chovek da znae kak rabotiat bibliotechnite funkcii inache lesno ste poluchi problema na "Shlemiel the painter" :)))
[линк]
[линк]
Re: Леле, великите програмисти
Dyljinata na masiv v baytove e ogranichena ot MAXINT, taka ili inache. Na vsyaka arhitektura.
Re: Леле, великите програмисти
ako e masiv -- da, no ako e char* kakuvto e sluchaia -- ne
Re: incompatible types in assignment
Az imam predvid koda na Malkia, v originalnija posting njama "strcpy".
A inache si prav - v originalnija posting problema idva ot gets, v postinga na Malkia idva ot strcpy.
Po-zdravi !
A inache si prav - v originalnija posting problema idva ot gets, v postinga na Malkia idva ot strcpy.
Po-zdravi !
Re: Леле, великите програмисти
mersi :)))
statiikata deto si q dal po-dolu e dosta dorbra.
nadqvah se cge i drugite she shvanat kvo imam predvid ama mai she trqbva da im go obqsnq...
znachi imame masiv 25 elementa, ako go obhodim celiq kopirame i \0 mejdu drugoto, ako nqma \0 ne omazvame druga pamet. ne polzvam strlen zashtoto togava imame:
1. izvikvane na funkciq
2. pyhane na pointer v steka
3. koda na strlen
size_t
strlen(str)
const char *str;
{
register const char *s;
for (s = str; *s; ++s);
return(s - str);
}
3. chistene na steka
4. return ot funkciqta
v sluchaq samo s 25 elementa mislq che tova e nenujno ako beshe 1K naprimer da, ama v toq sluchaq...
IF JADEN THEN
GOTO BIRARIA;
statiikata deto si q dal po-dolu e dosta dorbra.
nadqvah se cge i drugite she shvanat kvo imam predvid ama mai she trqbva da im go obqsnq...
znachi imame masiv 25 elementa, ako go obhodim celiq kopirame i \0 mejdu drugoto, ako nqma \0 ne omazvame druga pamet. ne polzvam strlen zashtoto togava imame:
1. izvikvane na funkciq
2. pyhane na pointer v steka
3. koda na strlen
size_t
strlen(str)
const char *str;
{
register const char *s;
for (s = str; *s; ++s);
return(s - str);
}
3. chistene na steka
4. return ot funkciqta
v sluchaq samo s 25 elementa mislq che tova e nenujno ako beshe 1K naprimer da, ama v toq sluchaq...
IF JADEN THEN
GOTO BIRARIA;
Re: Леле, великите програмисти
Mai neiasno sum se izrazil po gore, imam predvid za realizaciata na strupr(char*) s counter che niama da raboti na vsichki arhitekturi, a ne za chastnia sluchai s masiv v purvonachalnia posting
Re: Леле, великите програмисти
Naprotiv, pravilno sym te razbral. Iskah da kaja, che ne mojesh da kompilirash takova neshto:
char str[(unsigned)MAXINT + 1];
Nito pyk:
char *str = new char[(unsigned)MAXINT + 1];
Sledovatelno s broyach int ne ogranichavash obshtnostta.
char str[(unsigned)MAXINT + 1];
Nito pyk:
char *str = new char[(unsigned)MAXINT + 1];
Sledovatelno s broyach int ne ogranichavash obshtnostta.
Редактирано от Potencialen emigrant на
Re: Леле, великите програмисти
ami
char* s = calloc((unsigned)MAXINT,(unsigned)MAXINT);
bi trqbvalo da raboti ama ot de tolkos pamet che da probvam ;)
IF JADEN THEN
GOTO BIRARIA;
char* s = calloc((unsigned)MAXINT,(unsigned)MAXINT);
bi trqbvalo da raboti ama ot de tolkos pamet che da probvam ;)
IF JADEN THEN
GOTO BIRARIA;
Редактирано от Aл Koxoнe на
hehehe
Ebasi kvo mi napravihte ot temichkata :)))
pitah vi prost vurpos a vie... ;)
vsushnost ucha C v momenta ot edna kniga - Absolute beginner's guide to C
i prosto se chudeh kak moga prosto i burzo da se napishe programa koiato kato napishesh neshto v uppercase da go convertira v lowercase i obratnoto
samo na ANSI C
- null
pitah vi prost vurpos a vie... ;)
vsushnost ucha C v momenta ot edna kniga - Absolute beginner's guide to C
i prosto se chudeh kak moga prosto i burzo da se napishe programa koiato kato napishesh neshto v uppercase da go convertira v lowercase i obratnoto
samo na ANSI C
- null
eto ti dwe reshenia na problema :)
#include <ctype.h>
#include <stdio.h>
/*
// not ANSI C
#include <conio.h>
// read from console and write to console in uppercase.
// terminate with Esc. Note that newline is Ctrl-J
int main()
{
int c;
while ( 27 != ( c = getch() ) ) { putch( toupper( c ) ); }
return 0;
}
*/
//ANSI C
// read from stdin and write to stdout in uppercase.
// terminate with EOF ( Ctrl-Z in DOS )
int main()
{
int c;
while ( EOF != ( c = getchar() ) ) { putchar( toupper( c ) ); }
return 0;
}
#include <stdio.h>
/*
// not ANSI C
#include <conio.h>
// read from console and write to console in uppercase.
// terminate with Esc. Note that newline is Ctrl-J
int main()
{
int c;
while ( 27 != ( c = getch() ) ) { putch( toupper( c ) ); }
return 0;
}
*/
//ANSI C
// read from stdin and write to stdout in uppercase.
// terminate with EOF ( Ctrl-Z in DOS )
int main()
{
int c;
while ( EOF != ( c = getchar() ) ) { putchar( toupper( c ) ); }
return 0;
}
Re: Леле, великите програмисти
E ako izpolzvash niakvo API koeto moje da alokira 0 terminated string po-dulug ot MAXINT, kak she raboti, no kakto i da e, tova sa hipotetichni sluchai, prosto imah predvi che drugia variant e safe i ste bachka ABSOLUTNO vinagi :)))
Re: Леле, великите програмисти
Ama nyama kak da napravish takova neshto, semantikata na ezika ne go pozvolyava... I variantyt s broyach shte raboti vse tolkova absolyutno vinagi, tova se opitvam da obyasnya... :-(