tengo una cadena del formato "ABCDEFG, 12: 34: 56: 78: 90: 11". Quiero separar estos dos valores que están separados por comas en dos cadenas diferentes. ¿Cómo hago eso en gcc usando el lenguaje c?Analizando una cadena
Respuesta
Una posibilidad es algo como esto:
char first[20], second[20];
scanf("%19[^,], %19[^\n]", first, second);
char str[] = "ABCDEFG,12:34:56:78:90:11"; //[1]
char *first = strtok(str, ","); //[2]
char *second = strtok(NULL, ""); //[3]
[1] ABCDEFG,12:34:56:78:90:11 [2] ABCDEFG\012:34:56:78:90:11 Comma replaced with null character with first pointing to 'A' [3] Subsequent calls to `strtok` have NULL` as first argument. You can change the delimiter though. Note: you cannot use "string literals", because `strtok` modifies the string.
me da error de segmentación al probar esto? ¿cuál puede ser el motivo? – sfactor
@sfactor - probablemente esté llamando a 'strtok (" ABCD, etc. ",", ")' - es decir, pasar un literal de cadena a 'strtok'. Y 'strtok' funciona modificando la cadena original - reemplaza separadores (',') con caracteres nulos. Esta es una de las razones por las que no recomendaría 'strtok' incluso a mi enemigo :). (La segunda razón es que mantiene un estado global y, por lo tanto, no reentrante y puede no ser seguro para subprocesos). – atzz
@sfactor: aparte de lo que ya ha dicho atzz, asegúrese de que la cadena a la que llama strtok esté terminada en nulo. ¿Puedes publicar exactamente lo que estás usando? –
Puede utilizar strtok que le permitirá especificar el separador y generar las fichas para usted.
Usted podría utilizar strtok:
Ejemplo de cppreference.com:
char str[] = "now # is the time for all # good men to come to the # aid of their country";
char delims[] = "#";
char *result = NULL;
result = strtok(str, delims);
while(result != NULL) {
printf("result is \"%s\"\n", result);
result = strtok(NULL, delims);
}
Así que muchas personas están sugiriendo strtok
... ¿Por qué? strtok
es un sobrante de la edad de piedra de la programación y solo es bueno para las utilidades de 20 líneas.
Cada llamada a strtok modifica strToken insertando un carácter nulo después del token devuelto por esa llamada. [...] [F] unction usa una variable estática para analizar la cadena en tokens. [...] La intercalación de llamadas a esta función es altamente probable que produzca corrupción de datos y resultados inexactos.
scanf
, como en Jerry Ataúd de answer, es una alternativa mucho mejor. O bien, puede hacerlo manualmente: encuentre el separador con strchr
, luego copie las partes en separadores separados.
Trate de usar la siguiente expresión regular se encontrará nada con caracteres az AZ seguido de un ""
"[AZ] ," si necesita letra minúscula demasiado probar "[a-zA-Z], "
Si lo necesita para buscar la segunda parte primero puede probar con el siguiente
", [0-9] {2}: [0-9] {2}: [0- 9] {2}: [0-9] {2}: [0-9] {2}: [0-9] {2} "
Hay un ejemplo sobre cómo usar REGEX en http://ddj.com/184404797
Gracias, V $ h3r
- 1. Analizando una cadena SQL
- 2. Haskell parsec analizando una cadena de elementos
- 3. Analizando una cadena JSON en Haskell
- 4. Analizando una expresión de cadena C# LINQ
- 5. Analizando cadena multibyte en PHP
- 6. Analizando una cadena en C#; ¿hay una manera más limpia?
- 7. Analizando una cadena en un valor booleano en PHP
- 8. Analizando un Int de una cadena en javascript
- 9. Analizando una cadena de fecha para obtener el año
- 10. Analizando una cadena para las fechas en PHP
- 11. Analizando Expresiones Condicionales a la Cadena
- 12. Analizando 'cadena de tiempo' con Python?
- 13. Analizando la cadena JSON al objeto .NET
- 14. Analizando entero a la cadena C
- 15. Analizando una fórmula química
- 16. Analizando una consulta de usuario
- 17. analizando una enumeración en JSON.net
- 18. Analizando HTML desde una página web
- 19. Analizando cadena ISO 8601 a DateTime en .NET?
- 20. Analizando el código C# (como cadena) e insertando métodos adicionales
- 21. Analizando una fórmula química a partir de una cadena en C#?
- 22. Analizando reStructuredText en HTML
- 23. Analizando un XML HttpResponse
- 24. Analizando la cadena "009" como un entero en javascript?
- 25. Analizando una matriz JSON en un NSDictionary
- 26. Analizando la respuesta ksoap2
- 27. Analizando JSON en J2ME
- 28. Analizando un stdout en Python
- 29. Analizando una gramática sin contexto en Python
- 30. Analizando una identificación de Vimeo usando JavaScript?
No es claro qué tipo de comprobación de sintaxis qué necesita. ¿Estás tratando de hacer CSV? ¿Los primeros personajes tienen que estar en mayúscula? –