/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Konvertering fra char* til char[80] i C++
Fra : Kasper Kristensen


Dato : 11-08-03 23:01

Jeg har en "char* text" som jeg gerne vil konvertere til "char[80]" men
hvordan gøres det nemmest.

char[80] buffer;
strcpy(buffer,text)

giver en kompilationsfejl, og jeg kan da godt se, at det er lidt udefineret
hvad der skal ske med eventuelle tegn fra string som rækker ud over de 80,
men hvordan gøres det så ?

Bemærk at grunden til jeg beder om et C++ svar er, at ovenstående kompilerer
(dog med en warning) og kører hvis det kompileres som et c-program.

Cheers

Kasper



 
 
Martin Moller Peders~ (11-08-2003)
Kommentar
Fra : Martin Moller Peders~


Dato : 11-08-03 14:37

In <3f37937c$0$97220$edfadb0f@dread12.news.tele.dk> "Kasper Kristensen" <spam_me_senseless_khk@mindgroup.dk> writes:

>Jeg har en "char* text" som jeg gerne vil konvertere til "char[80]" men
>hvordan gøres det nemmest.

>char[80] buffer;
>strcpy(buffer,text)

Hvis det er C++, saa burde du bruge string i <string> istedet for
char pointere.

Hvis du vil bruge char *, saa kig paa
strncpy eller strlcpy istedet for strcpy

Mvh
/Martin

Bertel Lund Hansen (11-08-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-08-03 14:48

Kasper Kristensen skrev:

>Jeg har en "char* text" som jeg gerne vil konvertere til "char[80]" men
>hvordan gøres det nemmest.

>char[80] buffer;
>strcpy(buffer,text)

Følgende kan jeg fint kompilere i C++ (Borland 5.5):

#include <string.h>

int main () {
char text[]="Hej med dig!";
char buffer[80];

strcpy(buffer,text);
return 0;
}

>giver en kompilationsfejl, og jeg kan da godt se, at det er lidt udefineret
>hvad der skal ske med eventuelle tegn fra string som rækker ud over de 80,

Det er ikke noget problem.

>Bemærk at grunden til jeg beder om et C++ svar er, [...]

Når du bruger C++, forstår jeg ikke at du går tilbage til C's
komplekse strenghåndtering. I C++ kunne det se sådan ud:

#include <string>
using namespace std;

int main () {
string text="Hej med dig!";
string buffer;

buffer=text;
return 0;
}


--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Kasper Kristensen (11-08-2003)
Kommentar
Fra : Kasper Kristensen


Dato : 11-08-03 23:59


"Bertel Lund Hansen" <nospamfor@lundhansen.dk> wrote in message
news:pa7fjv4mdu1bhf2coib5toqlkqqigh4hqe@news.stofanet.dk...
> Følgende kan jeg fint kompilere i C++ (Borland 5.5):
>
> #include <string.h>
>
> int main () {
> char text[]="Hej med dig!";
> char buffer[80];
>
> strcpy(buffer,text);
> return 0;
> }
>
> >giver en kompilationsfejl, og jeg kan da godt se, at det er lidt
udefineret
> >hvad der skal ske med eventuelle tegn fra string som rækker ud over de
80,
>
> Det er ikke noget problem.
>

Jeps det kan jeg også nu. Fejlen var en helt anden, som bare gav sig udslag
på netop den linje. Beklager jeg spildte jeres tid.

> >Bemærk at grunden til jeg beder om et C++ svar er, [...]
>
> Når du bruger C++, forstår jeg ikke at du går tilbage til C's
> komplekse strenghåndtering. I C++ kunne det se sådan ud:
>
>

Det ville jeg normalt heller ikke gøre, men jeg bygger videre på noget
gammel c-kode, så nogle få steder slipper jeg ikke for at manipulere lidt
med char* og den slags.

Mvh.

Kasper



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste