En C, ¿cómo puedo separar una matriz de caracteres por un delimitador? o es mejor manipular una cadena? ¿Cuáles son algunas buenas funciones de manipulación de c char?C dividir una matriz de caracteres en diferentes variables
Respuesta
#include<string.h>
#include<stdio.h>
int main()
{
char input[16] = "abc,d";
char *p;
p = strtok(input, ",");
if(p)
{
printf("%s\n", p);
}
p = strtok(NULL, ",");
if(p)
printf("%s\n", p);
return 0;
}
se puede ver este programa .First se debe utilizar el strtok (entrada, " "). Entrada es la cadena que desea spilt.Then utiliza el strtok (NULL,""). Si el valor de retorno es verdadero, puede imprimir el otro grupo.
Gracias por el código, pregunta tonta, ¿por qué estás usando strtok por segunda vez? Además, ¿qué significa "Si el valor de retorno es verdadero, puede imprimir el otro grupo". ¿media? –
Mire strtok(). strtok() no es una función reentrante.
strtok_r() es la versión re-entrante de strtok(). Aquí está un programa de ejemplo en el manual:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *str1, *str2, *token, *subtoken;
char *saveptr1, *saveptr2;
int j;
if (argc != 4) {
fprintf(stderr, "Usage: %s string delim subdelim\n",argv[0]);
exit(EXIT_FAILURE);
}
for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) {
token = strtok_r(str1, argv[2], &saveptr1);
if (token == NULL)
break;
printf("%d: %s\n", j, token);
for (str2 = token; ; str2 = NULL) {
subtoken = strtok_r(str2, argv[3], &saveptr2);
if (subtoken == NULL)
break;
printf(" --> %s\n", subtoken);
}
}
exit(EXIT_SUCCESS);
}
muestra de ejecución que opera sobre subtokens que se obtuvo de la ficha anterior basado en un delimitador diferente:
$ ./a.out hello:word:bye=abc:def:ghi = :
1: hello:word:bye
--> hello
--> word
--> bye
2: abc:def:ghi
--> abc
--> def
--> ghi
¿Puede eso manipular una matriz de caracteres o debe ser una cadena? –
Por favor, no recomiende 'strtok', no es reentrante. Su "hermano mayor" 'strtok_r' es mucho mejor. – dasblinkenlight
@Thiruvalluvar: no se trata solo de seguridad de subprocesos, ¿qué pasaría si quieres poner dos cadenas diferentes al mismo tiempo, p. en el mismo bucle? –
Una opción es strtok
ejemplo :
char name[20];
//pretend name is set to the value "My name"
Quiere dividirlo en el espacio entre las dos palabras s
split=strtok(name," ");
while(split != NULL)
{
word=split;
split=strtok(NULL," ");
}
Usted podría simplemente reemplazar los caracteres de separación de caracteres NULL, y almacenar la dirección después de que el carácter nulo recién creado en un nuevo char * puntero:
char* input = "asdf|qwer"
char* parts[10];
int partcount = 0;
parts[partcount++] = input;
char* ptr = input;
while(*ptr) { //check if the string is over
if(*ptr == '|') {
*ptr = 0;
parts[partcount++] = ptr + 1;
}
ptr++;
}
Tenga en cuenta que este código, por supuesto, no funciona si la cadena de entrada contiene más de 9 caracteres separadores.
me ocurrió con this.This parece funcionar mejor para me.It convierte una cadena de número y la divide en gama de número entero:
void splitInput(int arr[], int sizeArr, char num[])
{
for(int i = 0; i < sizeArr; i++)
// We are subtracting 48 because the numbers in ASCII starts at 48.
arr[i] = (int)num[i] - 48;
}
- 1. dividir cadena en una serie de caracteres diferentes
- 2. Dividir una matriz en las variables en php
- 3. Cómo dividir una cadena de solo diez caracteres, por ejemplo, "12345 * 45688" en una matriz
- 4. dividir una cadena en una matriz en C++
- 5. Dividir una matriz en MATLAB
- 6. borrar una matriz de caracteres c
- 7. C declarando una matriz de caracteres *
- 8. dividir una cadena en diferentes cadenas
- 9. Cómo dividir una cadena por x cantidad de caracteres
- 10. Separar cadena en una matriz de cadenas de caracteres
- 11. Dividir una cadena y almacenarla en una matriz en lua
- 12. Separar cadena en una matriz de caracteres en C++
- 13. C# Dividir una cadena por otra cadena
- 14. concatenar matriz de caracteres en C
- 15. Ordenar una matriz de matrices de diferentes índices en C
- 16. ¿Cómo dividir una cadena con caracteres en blanco al principio?
- 17. Cómo dividir una cadena por varios caracteres en MSBuild 4?
- 18. PHP: dividir una cadena en una matriz foreach char
- 19. ¿Cómo dividir una matriz en partes iguales?
- 20. Dividir una matriz en algunos sub-arrays
- 21. Cómo dividir una matriz en Ruby
- 22. Devolver un puntero a una matriz de caracteres en C
- 23. Cómo dividir una cadena en matriz en PostScript
- 24. asignar una matriz de caracteres a una cadena literal - C++
- 25. ¿Cómo circular una matriz de 4 caracteres?
- 26. Cómo dividir una matriz de bytes
- 27. Numpy: cómo dividir/seleccionar aleatoriamente una matriz en n matrices diferentes
- 28. C++ vector de matriz de caracteres
- 29. cómo dividir en grupo de caracteres?
- 30. dividir una cadena en una matriz de números
posible duplicado de [Separar una cadena con delimitadores en C] (http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c) –