Viciomovil escribió:Si utilizas char* tienes una región de la memory de solo lectura y un puntero a ella.
Podrías representarlo como una matriz de char[], por ejemplo, de esta forma char[0][1] sería la letra numero 2 de la primera palabra de la fila.
Puedes copiar directamente de la matriz al array que necesites.
Las otras opciones para trabajar con char* requieren del uso de la librería string.h, puedes consultarlas aquí.
http://es.wikipedia.org/wiki/String.h
exitfor escribió:Un string es en si misma un charr array. Y es posible acceder a la posición de éste.
char cadena[] = "ABCD";
printf("%c",cadena[2]);
Eso imprimiría la letra C, ¿correcto? En lugar de imprimir, manda cada char que componga esa cadena al array que tú quieres. Puedes ver la longitud de una cadena, así que puedes recorrerla de 0 a fin posición a posición para manejar cada char como quieras.
printf("%s",cadena);
char *dictionary[] = {"These", "are", "some", "strings"};
char* riddle = dictionary[rand() % 4];
// Como curiosidad,
int sizeDictionary = sizeof(dictionary) / sizeof(char*);
char* riddle = dictionary[rand() % sizeDictionary];
Viciomovil escribió:Si utilizas char* tienes una región de la memory de solo lectura y un puntero a ella.
Podrías representarlo como una matriz de char[], por ejemplo, de esta forma char[0][1] sería la letra numero 2 de la primera palabra de la fila.
Puedes copiar directamente de la matriz al array que necesites.
Las otras opciones para trabajar con char* requieren del uso de la librería string.h, puedes consultarlas aquí.
http://es.wikipedia.org/wiki/String.h
jam007 escribió:A ver si me acuerdo
Podrias usar el tpo ToCharArray();
convertir un String a un arreglo de caracteres.
osea haces el arreglo de las palabras, agregas doa for anidados una que separa el tamaño total del arreglo y otro que recora las palabras por separado (si faltaria como saber la longuitud de cada palabra)
despues conel metodo ToCharArray() , agregras cada palabra en un arreglo
ejemplo de esa parte
String palabra ="elotrolado";
char a[] =palabra.ToCharArray()
squarewave escribió:jam007 escribió:A ver si me acuerdo
Podrias usar el tpo ToCharArray();
convertir un String a un arreglo de caracteres.
osea haces el arreglo de las palabras, agregas doa for anidados una que separa el tamaño total del arreglo y otro que recora las palabras por separado (si faltaria como saber la longuitud de cada palabra)
despues conel metodo ToCharArray() , agregras cada palabra en un arreglo
ejemplo de esa parte
String palabra ="elotrolado";
char a[] =palabra.ToCharArray()
No existen tipos String en C, compañero.
squarewave escribió:Viciomovil escribió:Si utilizas char* tienes una región de la memory de solo lectura y un puntero a ella.
Podrías representarlo como una matriz de char[], por ejemplo, de esta forma char[0][1] sería la letra numero 2 de la primera palabra de la fila.
Puedes copiar directamente de la matriz al array que necesites.
Las otras opciones para trabajar con char* requieren del uso de la librería string.h, puedes consultarlas aquí.
http://es.wikipedia.org/wiki/String.h
¿Cómo es eso de que la memoria es de sólo lectura? Si utiliza un char* está declarando un puntero, pero no está reservando memoria.
Por otra parte, el concepto de "matriz" no sería del todo acertado porque la longitud de cada palabra es más que probable que será diferente. Es más bien un array de arrays de char.
Por último, como consejo, acostúmbrate a manejar las cadenas con la notación de punteros. Siempre y cuando sepas lo que es un puntero, claro. Pero me da, por tus dudas, que todavía no has empezado a manejar punteros ni te han introducido al maravilloso mundo del malloc().
The difference here is that
char *s = "Hello world";
will place Hello world in the read-only parts of the memory and making s a pointer to that, making any writing operation on this memory illegal. While doing:
char s[] = "Hello world";
puts the literal string in read-only memory and copies the string to newly allocated memory on the stack. Thus making
s[0] = 'J';
legal.
#include <stdio.h>
int main(void){
char string[100][100]={"Hola","Adios"};
/*Calculas el numero aleatorio para el primer valor, 0 o 1 en este caso*/
printf("%s\n",string[0]);
printf("%s\n",string[1]);
/*Si lo que necesitas es un caracter accedes a ese elemento*/
printf("%c\n",string[0][0]);
return 0;
}
Hola
Adios
H