Chcę się upewnić, czy dobrze rozwiązałem. Oto zadanie:
Funkcja strncpy(s1,s2,n) kopiuje z s2 do s1 dokładnie n znaków, w razie potrzeby skracając łańcuch s2 lub dodając do niego znaki zerowe. Łańcuch wynikowy może nie kończyć się znakiem zerowym, jeśli długość s2 wynosi n lub więcej. Wartością zwracaną jest s1. Napisz własną wersję tej funkcji
A oto kod:
#include <stdio.h>
#include <string.h>
char *kopiuj(char *lancuch1, char *lancuch2, int n);
int main(void)
{
char dane1[50], dane2[50];
int a;
printf("Cwiczenie 11.6 w jezyku C - autor: xpeye\n\n");
printf("Podaj pierwszy lancuch: ");
gets(dane1);
printf("Podaj drugi lancuch: ");
gets(dane2);
printf("Podaj ilosc znakow do skopiowania z drugiego lancucha do pierwszego: ");
scanf("%d", &a);
printf("Oto pierwszy lancuch po skopiowaniu:\n%s", kopiuj(dane1, dane2, a));
getchar();
getchar();
return 0;
}
char *kopiuj(char *lancuch1, char *lancuch2, int n)
{
int i=0, j=0;
if(strlen(lancuch2)>n)
*(lancuch2+n)='\0';
else if(strlen(lancuch2)<n)
{
j=strlen(lancuch2);
do
{
lancuch2[j]='\0';
j++;
} while(j<=n);
}
j=0;
do
{
lancuch1[i]=lancuch2[j];
i++;
j++;
} while(lancuch2[j-1]!='\0');
return lancuch1;
}
I jak?