Tienes varios errores comprensibles en este arranque con los arrays:
* El primer índice o bien no pones nada o, mejor pones el número de palabras que contiene el array capitulo1, 5 en este caso.
* El segundo índice no está mal ya que no se peca por exceso, pero penaliza el uso de la memoria y en este caso, como la palabra más larga es de 6 caracteres habrá que poner 7, por lo que te explique de tener en cuenta al caracter nulo de todo fin de cadena.
* En los for se te fue la olla al poner fil=0 y col=0 cuando los índices son i y j, por lo que será i=0 y j=0.
* En el caso de arrys de cadenas mejor que pensar en filas y columnas, algo típico en los arrayas bidimensionales numéricos aunque en sí no esté mal, es pensar en posición de la cadena y caracter de dicha cadena.
* Al usar la función strlen no le pusiste el argumento de la misma, fíjate en el código para verlo mejor.
* Haces un uso excesivo de las llaves. Cuando un for, if o compañía sólo tiene una instrucción como "cuerpo" te la puedes y debes ahorrar, sólo enmaraña la lectura del código. Supongo que es una buena costumbre adquirida de python, como el indentar siempre el código para una buena comprensión y fácil lectura.
* Tienes un punto y coma de más al final de los for, dentro del paréntesis.
* Al final te olvidaste de la instrucción para imprimir los resultados. He aquí la salida:
Código (cpp) [Seleccionar]
pincel ---->pin
cinc ---->c
cincel ---->cin
pipa ---->p
papel ---->pa
Y con tanto rollo casi me olvido de ponerte una posible solución, se podría mejorar con el uso de otras funciones de la librería string, pero estamos a lo que estamos, el uso de arrays:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <string.h>
int main(){
int i,j;
char capitulo1[5][7] = {"pincel", "cinc", "cincel", "pipa", "papel"};
char cap1[5][7]={0};
for (i= 0; i<5; i++)
for (j = 0; j<strlen(capitulo1[i])-3; j++)
cap1[i][j] = capitulo1[i][j];
for (i = 0; i<5; i++)
printf("%s ---->%s\n",capitulo1[i],cap1[i]);
return 0;
}
Una variante para que imprima en cap1 un número de letras en función de la longitud de la cadena y así no salgan cadenas de una sola letra sería:
Código (cpp) [Seleccionar]
pincel ---->pin
cinc ---->ci
cinceles ---->cinc
pipa ---->pi
termometro ---->termo
Para esta variante del código:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <string.h>
int main(){
int i,j,longitud;
char capitulo1[5][11] = {"pincel", "cinc", "cinceles", "pipa", "termometro"};
char cap1[5][11]={0};
for (i= 0; i<5; i++){
longitud=strlen(capitulo1[i])/2;
for (j = 0;j<longitud; j++)
cap1[i][j] = capitulo1[i][j];
}
for (i = 0; i<5; i++)
printf("%s ---->%s\n",capitulo1[i],cap1[i]);
return 0;
}
Espero no haberte agobiado con tantas sugerencias de un tirón pero sabes que para cualquier otra duda o sugerencia, aquí estamos para darte un empujoncito. ¡Ánimos!
Saluditos!. .... ...