全部文本 #1853904 原始 编辑

Something

公开 text v1 · 不可变
·已发布 2010-03-27 14:47 UTC
渲染后的文本正文
Napisati funkciju ciji je prototip

 char *Spoji(char *niz1, char *niz2)

koja ce stvoriti novi niz koji bi nastao naizmjeninim uzimanjem znakova iz niza1 i niza2 (dakle, prvi znak iz niza1, pa prvi znak iz niza2, pa drugi znak iz niza1, pa drugi znak iz niza2 itd. Nakon to se jedan od nizova iscrpi nadopisati preostale znakove iz onog drugog niza). Npr. ukoliko su ulazni nizovi bili "ABCDEFGH" i "123" stvoreni niz ce biti "A1B2C3DEFGH". Funkcija mora vratiti pokazivac na novostvoreni niz znakova. Mozete pretpostaviti da niz1 i niz2 nisu NULL pokazivaci, ali mogu biti prazni te u tom sluaju treba vratiti pokaziva na niz znakova duljine 0.

Doputene biblioteke funkcija: stdio.h, string.h, stdlib.h

Obavezno koristiti funkciju malloc (ili realloc)!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char *Spoji(char *niz1, char *niz2){
      char *p;
      int i=0,k=0,l=0;
      p=(char*)malloc(sizeof(char)); 
      
      while((niz1!=NULL)||(niz2!=NULL))
      {
                  
                  if(niz1!=NULL){
                  p[i]=niz1[k];
                  i++;
                  p=(char*)realloc(p,i*sizeof(char));
                  k++;}
                  
                  if (niz2!=NULL){
                  p[i]=niz2[l];
                  p=(char*)realloc(p,i*sizeof(char));
                  p[i++];
                  l++;}               
                  
      } p[i]='\0';
    return &p[0];
}
            

int main()
{  
   char pa1[]="ABCDEFGH", pa2[]="123";
   char *h,*j,*novi=(char*)malloc(9*sizeof(char));
   int n,i=0;
   
   novi=Spoji(&pa1[0],&pa2[0]);
   n=strlen(novi);
   
/*

for(i=0;i<9;i++)
   novi[i]=pa1[i];
   
   for(i=0;i<9;i++)
   printf("%c",novi[i]);
   
   novi=(char*)realloc(novi,12*sizeof(char));
   if(novi==NULL)
   exit (-1);
   
   novi[8]='4'; novi[9]='5'; novi[10]='6';novi[11]='7';novi[12]='\0';*/
   
   n=strlen(&novi[0]);
   printf("%d\n",n);

   for(i=0;i<n;i++)
   printf("%c",novi[i]);
    



  system("PAUSE");	
  return 0;
}