Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bobitttyy en 4 Junio 2015, 11:23 am



Título: guardar palabras de una cadena en arreglos
Publicado por: bobitttyy en 4 Junio 2015, 11:23 am
tenemos la cadena siguiente:
char cad[19]="esto es un mensaje";
y quiero llevaro a otro arreglo pero sus elementos son sus palabras, es decir:
char copia[4][20]={"esto","es","un","mensaje"};
Código:
#include <iostream>
#include <string.h>
using namespace std;
void main(){
char cad[80]="esto es un mensaje";
        char copia[80][20];//con[80] es longitud de cada palabra
int con[80], num_p=1,k=0;//num_p es el numero de palabras
for (int i = 0; i < strlen(cad); i++){
if (cad[i] == ' ')num_p++;
}
for (int i = 0; i < num_p; i++){
con[i] = 0;
}
num_p = 1; k = 0;
for (int i = 0; cad[i] != '\0';i++){
if (cad[i] == ' '){
num_p++; k = 0;
}
else{
cad[num_p - 1]++;
copia[num_p - 1][k++] = cad[i];
}
}
for (int i = 0; i < num_p; i++){
cout << copia[i] << "\n";
}
system("PAUSE");
}
se que hay un metodo de los tokens, pero yo quiero sin eso....consejos por favor


Título: Re: guardar palabras de una cadena en arreglos
Publicado por: user-marcos en 4 Junio 2015, 16:50 pm
Código
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int  main()
  5. {
  6.  char cad[80]="y esto es un mensaje";
  7.  char copia[20][80];
  8.  int cont = 0;
  9.  int it=0;
  10.  
  11.  for (int i = 0; i < strlen(cad); i++)
  12.    {
  13.      if(cad[i] != ' '){
  14. copia[cont][it] = cad[i];
  15. it++;
  16. }
  17.      else
  18.      { copia[cont][it+1]= '\0';
  19. cont++;
  20. it = 0;
  21.      }
  22.    }
  23.  
  24.  
  25.   for(int i = 0; i < cont+1; i++)
  26.   { cout << endl;
  27.     for(int j = 0; j < strlen(copia[i]); j++)
  28.       cout << copia[i][j];
  29.  }
  30.  
  31. }
  32.  
  33.  


Título: Re: guardar palabras de una cadena en arreglos
Publicado por: bobitttyy en 4 Junio 2015, 20:54 pm
Código
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int  main()
  5. {
  6.  char cad[80]="y esto es un mensaje";
  7.  char copia[20][80];
  8.  int cont = 0;
  9.  int it=0;
  10.  
  11.  for (int i = 0; i < strlen(cad); i++)
  12.    {
  13.      if(cad[i] != ' '){
  14. copia[cont][it] = cad[i];
  15. it++;
  16. }
  17.      else
  18.      { copia[cont][it+1]= '\0';
  19. cont++;
  20. it = 0;
  21.      }
  22.    }
  23.  
  24.  
  25.   for(int i = 0; i < cont+1; i++)
  26.   { cout << endl;
  27.     for(int j = 0; j < strlen(copia[i]); j++)
  28.       cout << copia[i][j];
  29.  }
  30.  
  31. }
  32.  
  33.  

gracias....me ayudo mucho


Título: Re: guardar palabras de una cadena en arreglos
Publicado por: ThunderCls en 7 Junio 2015, 05:18 am
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main ()
  5. {
  6.  char str[] ="- This, a sample string.";
  7.  char * pch;
  8.  printf ("Splitting string \"%s\" into tokens:\n",str);
  9.  pch = strtok (str," ,.-");
  10.  while (pch != NULL)
  11.  {
  12.    printf ("%s\n",pch);
  13.    pch = strtok (NULL, " ,.-");
  14.  }
  15.  return 0;
  16. }

AQUI (http://www.cplusplus.com/reference/cstring/strtok/) puedes aclararte mas
Saludos


Título: Re: guardar palabras de una cadena en arreglos
Publicado por: antoniognzle en 7 Junio 2015, 17:38 pm
Tambien puedes utilzar las funciones STR, y en este caso strcpy