Advertisement
apollw

insercao_string_em_string

Oct 18th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.53 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. /*Receber a string 1 e a string 2, e um número, e inserir string 2 a partir da posição do número dado na string 1*/
  5.  
  6. int main(void){
  7.  
  8. int i,k,j=0,n;
  9. char s1[100],s2[100],s3[200];
  10.  
  11. puts("Entre com a sua string:\n");
  12. gets(s1);
  13.  
  14. fflush(stdin);
  15. puts("Entre com a outra string:\n");
  16. gets(s2);
  17.  
  18. /*Esse teste impede o usuário de inserir um número inválido*/
  19. while(n<0||n>strlen(s1)){
  20.     puts("Entre com a posicao a incluir a outra string:\n");
  21.     scanf("%d",&n);
  22.  
  23.     if(n<0||n>strlen(s1)){
  24.         puts("Entre com um numero valido:\n");
  25.         scanf("%d",&n);
  26.     }
  27. }
  28.  
  29.             /*INSERÇÃO*/
  30. for(i=0;i<strlen(s1);i++){      /*Varre toda a string 1*/
  31.  
  32.     s3[i]=s1[i];                /*Vai copiando s1 em s3 até chegar na posição n desejada*/
  33.  
  34.     if(i==n){
  35.         for(k=n;k<n+strlen(s2);k++){ /*Abre um laço de k a partir de n até k ser igual a tam s2+n.
  36.                                      Ex.: cachorro verde n = 3. k=3 até k = 8 -> cacverde*/
  37.             s3[k]=s2[j];
  38.             j++;                    /*Incrementa o j pois estamos copiando de j=0 até o fim de s2*/
  39.         }
  40.  
  41.         j=n+strlen(s2);             /*j será usado em outro laço agora, onde começa depois de cacverde*/
  42.  
  43.         if(n<strlen(s1)){      /*Caso n seja diferente do tamanho de s1, apenas copiamos o resto de s1 em s3*/
  44.  
  45.             for(k=j;k<strlen(s1)+j-n;k++){ /*Para k = 8, em cacverde, enquanto k for menor que tam s1+j-n, ou seja,
  46.                                             cachorro=8, j=cacverde=8, n=3, então, cachorro+cacverde-3 = 13, que é
  47.                                             o espaço total da s3 + o resto da s1, para adicionar o resto da s1*/
  48.  
  49.                 s3[k]=s1[i];                /*Como o laço parou em i=3, apenas incrementamos o i de s1 agora até o fim,
  50.                                             no caso de cacverde, o limite é 5, que é o tamanho de horro.*/
  51.                 i++;
  52.                 }
  53.             }
  54.     }
  55.     else if(n==strlen(s1)){                 /*Se o n for igual ao tamanho da string, ocorrerá uma simples concatenação*/
  56.         for(i=0;i<strlen(s1);i++)
  57.             s3[i]=s1[i];
  58.  
  59.         for(j=0;j<strlen(s2);j++)
  60.             s3[strlen(s1)+j]=s2[j];
  61.  
  62.         s3[strlen(s1)+strlen(s2)]='\0';
  63.     }
  64. }
  65.  
  66. s3[strlen(s1)+strlen(s2)]='\0';             /*Em qualquer dos casos, o tamanho de s3 será igual à soma de s1 e s2*/
  67.  
  68. /*puts(s1);
  69. puts(s2);*/
  70. printf("A nova string sera:\n%s\n",s3);
  71.  
  72. system("pause");
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement