Criar uma função que recebe duas strings e um inteiro n como parâmetro e retorna uma nova string formada pela concatenação da primeira string com os
primeiros n caracteres da segunda string.
#include <stdio.h>
#include <assert.h>
#include<stdlib.h>
#include<string.h>
//
// Função duas string
//
void contatenarStrings (char string1[], char string2[], int pos);
int main(void){
char lastName[20];
char firstName[20];
int pos;
scanf("%s", firstName);
scanf("%s", lastName);
scanf("%d", &pos);
contatenarStrings(firstName, lastName, pos);
printf("%s\n", firstName);
return 0;
}
void contatenarStrings (char string1[], char string2[], int pos)
{
char tmp[20];
strncpy(tmp, string1, pos);
strcat(tmp, string2);
strcat(tmp, &string1[pos]);
strcpy(string1, tmp);
}
Fonte: https://www.clubedohardware.com.br/forums/topic/1383163-montar-duas-string-que-chame-a-outra-o-ru-sera-8/
Como ficaria essa função(contatenarStrings) sem usar funções prontas da bibliotega string
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NOME 1
#define CHAR 50
void concatena (char a[], char b[])
{
printf("%s %s\n\n", a, b);
}
int main()
{
char nome[NOME][CHAR], sobrenome [NOM][CHAR];
int i, encontrou = 0;
for (i = 1; i <= NOME; i++)
{
printf("\nDigite o nome %d: \n", i);
scanf(" %[^\n]s",nome[i]);
}
for (i = 1; i <= NOME; i++)
{
printf("\nDigite o sobrenome %d: \n", i);
scanf(" %[^\n]s",sobrenome[i]);
}
printf("\n\n\n");
for (i = 1; i <= NOME; i++)
{
concatena(nome [i], sobrenome [i]);
}
printf("\n\n\n");
}
Desse jeito eu consigo concatenar, mais não entendi bem a lógica do N inteiro.