infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Herpesius din Octombrie 06, 2008, 15:31:33



Titlul: Intrebre de strxfrm()
Scris de: Herpesius din Octombrie 06, 2008, 15:31:33
Am rasfoit un pic manualul de info si m-am lamurit. Cica functia copiaza din sirul sursa in sirul destinatie maxim n-1 caractere, dupa care adauga caracterul NULL. La mine nu adauga niciun caracter null. Nici in descrierea de pe cplusplus.com nu precizeaza ca adauga caracterul NULL. Deci e gresit in manual sau sunt eu prost ?

Cod:
char a[16]="George",b[32]="Patrik Gicu";
strxfrm(b,a,6);

b va fi "George Gicu".Nu trebuia sa fie "George\0" ?

P.S. Cred ca sunt eu prost :|.


Titlul: Răspuns: Intrebre de strxfrm()
Scris de: Andrei Grigorean din Octombrie 06, 2008, 16:04:16
http://www.cplusplus.com/reference/clibrary/cstring/strxfrm.html


Titlul: Răspuns: Intrebre de strxfrm()
Scris de: Herpesius din Octombrie 07, 2008, 19:00:51
Cod:
#include <iostream>
#include <string.h>
using namespace std;

int main(){
char sir1[256]="beta",sir2[256]="alfabet";
strxfrm(sir2,sir1,3); cout<<sir2<<"\xA"; //afiseaza be
return 0;}

Dupa regulile din carte trebuia sa afiseze be (pentru ca in definitia din manual copiaza n-1 caractere si adauga caracterul NULL \0)

Mie nu-mi adauga niciun caracter null si imi afiseaza betabet. Nici pe cplusplus.com nu precizeaza ca adauga \0 dupa ce copie.


Titlul: Răspuns: Intrebre de strxfrm()
Scris de: Valentin Stanciu din Octombrie 24, 2008, 13:14:12
Eu as avea mai multa incredere in cplusplus.com decat in "manualul de info".
Manualul de info este posibil sa fie scris pentru mediile Borland, care nu sunt tocmai conforme cu standardul.