Page 1 of 1

implementare functia "strncpy"

Posted: 11 Apr 2015, 12:36
by david_stelian
Primul cod este facut cu siruri de caractere si ruleaza, insa al doilea cod nu ruleaza cand este facut cu pointeri.
Imi poate spune cineva de ce ?

Code: Select all

#include <iostream>
using namespace std;
void strncpy(char[50], char[50], int);

int main()
{
    char sursa[50] = "alexandrescu", destinatie[50];
    strncpy(sursa, destinatie, 10);
    return 0;
}

void strncpy(char sursa[50], char destinatie[50], int n)
{
    cout << "\n Sirul destinatie este: ";
    for (int i=0; i<n; i++)
    {
        destinatie[i]=sursa[i];
        cout << destinatie[i];
    }
    cout << endl;
}

Code: Select all

#include <iostream>
using namespace std;
void strncpy(char*, char*, int);

int main()
{
    char *sursa = "alexandrescu", *destinatie = '\0';
    strncpy(sursa, destinatie, 10);
    return 0;
}

void strncpy(char *sursa, char *destinatie, int n)
{
    cout << "\n Sirul destinatie este: ";
    for (int i=0; i<n; i++)
    {
        *(destinatie+i)=*(sursa+i);
        cout << *(destinatie+i);
    }
    cout << endl;
}

Re: implementare functia "strncpy"

Posted: 11 Apr 2015, 16:10
by neagu_laurentiu
Pentru ca nu ai alocat spatiul necesar stocarii in "destinatie".

Re: implementare functia "strncpy"

Posted: 14 Apr 2015, 23:51
by Silviu Ardelean
Ca un mic comentariu... un array pasat ca argument ajunge sa fie ajustat de catre compilator ca un pointer char la primul element. Deci, in ambele situatii ai pointeri. Diferenta e de "semantic sugar" cu operatorul [].