Si se trata de escribir una cadena alfanumérica y hacer que la misma se divida en bloques separados de letras o números, entonces en ese caso escribí un código simple que hace eso, el tema es que justo me dieron ganas de no hacer nada XD y lo dejé funcionando pero sin terminar ya que no llegué a implementar memoria dinámica para que quede terminado.
En lugar de eso existe un array de cadenas de un máximo aceptable de 20 cadenas, pero para ver como se hace te va a servir.
Tu código dijiste que estaba mal por eso te muestro este otro código.
Como te dije, está sin terminar pero por eso mismo si te interesa lo podés terminar, implementando memoria dinámica para el array de cadenas que vas a usar para guardar todos los bloques.
En lugar de eso existe un array de cadenas de un máximo aceptable de 20 cadenas, pero para ver como se hace te va a servir.
Tu código dijiste que estaba mal por eso te muestro este otro código.
Como te dije, está sin terminar pero por eso mismo si te interesa lo podés terminar, implementando memoria dinámica para el array de cadenas que vas a usar para guardar todos los bloques.
Código (cpp) [Seleccionar]
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//http://www.cplusplus.com/reference/cstdlib/realloc/
int main(){
char cadena[512];
//char** array_de_cadenas_r = 0;
//char** array_de_cadenas = (char**)malloc(sizeof(char)*1);
//array_de_cadenas[0] = (char*)malloc(sizeof(char)*128);
char array_de_cadenas[20][128] = {{0}};
printf("ingrese la cadena..\n");
scanf("%s", cadena);
int modo=0;
int pos=-1;
int let;
int num;
int i=0;
int j;
while(cadena[i]){
if(pos == 20) break;
if(cadena[i] >= 'a' && cadena[i]<='z'){
let++;
num=0;
}
else if(cadena[i] >= 'A' && cadena[i]<='Z'){
let++;
num=0;
}
else if(cadena[i] >= '0' && cadena[i]<='9'){
num++;
let=0;
}
else
{
let=0;
num=0;
}
if((modo==1&&let)||(modo==2&&num));
else
{
pos++;
j=0;
//int a=0;
//char backup[512];
//strcpy(backup, array_de_cadenas[a]);
//array_de_cadenas_r = (char**)realloc(array_de_cadenas, sizeof(char)*(pos+1));
//array_de_cadenas[pos] = (char*)malloc(sizeof(char)*128);
}
if(let){
array_de_cadenas[pos][j] = cadena[i];
j++;
modo=1;
}
else if(num){
array_de_cadenas[pos][j] = cadena[i];
j++;
modo=2;
}
else
{
modo=0;
}
i++;
}
for(int b=0; b<pos+1; b++){
printf(array_de_cadenas[b]);
putchar('\n');
}
//for(int c=0; c<pos; c++) free(array_de_cadenas[c]);
//free(array_de_cadenas);
system("pause");
return 0;
}