Tengo una matriz de números enteros, por ejemplo int example[5] = {1,2,3,4,5}
. Ahora quiero convertirlos en matriz de caracteres usando C, no C++. ¿Cómo puedo hacerlo?Convertir matriz int a matriz de caracteres
Respuesta
Dependiendo de lo que realmente quiere, hay varias posibles respuestas a esta pregunta: ¿
int example[5] = {1,2,3,4,5};
char output[5];
int i;
copia directa caracteres de control dando ASCII 1 - 5
for (i = 0 ; i < 5 ; ++i)
{
output[i] = example[i];
}
caracteres '1' - '5 '
for (i = 0 ; i < 5 ; ++i)
{
output[i] = example[i] + '0';
}
cadenas que representa el 1 - 5.
char stringBuffer[20]; // Needs to be more than big enough to hold all the digits of an int
char* outputStrings[5];
for (i = 0 ; i < 5 ; ++i)
{
snprintf(stringBuffer, 20, "%d", example[i]);
// check for overrun omitted
outputStrings[i] = strdup(stringBuffer);
}
¿Qué pasa si el número entero es más grande que '9'? Los enteros superiores a '10' no se convertirán al formato char. – Stallman
puede convertir un solo dígito entero en el carácter correspondiente usando esta expresión:
int intDigit = 3;
char charDigit = '0' + intDigit; /* Sets charDigit to the character '3'. */
Tenga en cuenta que esto sólo es válido, por supuesto, de un solo dígito. Extrapolar lo anterior para trabajar contra matrices debe ser sencillo.
Necesita crear la matriz, porque sizeof(int)
es (casi seguro) diferente de sizeof(char)==1
.
Tienen un ciclo en el que se hace char_example[i] = example[i]
.
Si lo que desea es convertir un entero en una cadena que sólo podría resumir el número entero a '0'
pero sólo si está seguro de que su número entero entre 0 y 9, de lo contrario necesitarás para usar algo más sofisticado como sprintf
.
#include <stdio.h>
int main(void)
{
int i_array[5] = { 65, 66, 67, 68, 69 };
char* c_array[5];
int i = 0;
for (i; i < 5; i++)
{
//c[i] = itoa(array[i]); /* Windows */
/* Linux */
// allocate a big enough char to store an int (which is 4bytes, depending on your platform)
char c[sizeof(int)];
// copy int to char
snprintf(c, sizeof(int), "%d", i_array[i]); //copy those 4bytes
// allocate enough space on char* array to store this result
c_array[i] = malloc(sizeof(c));
strcpy(c_array[i], c); // copy to the array of results
printf("c[%d] = %s\n", i, c_array[i]); //print it
}
// loop again and release memory: free(c_array[i])
return 0;
}
Salidas:
c[0] = 65
c[1] = 66
c[2] = 67
c[3] = 68
c[4] = 69
Su respuesta solo funcionará para números hasta 999, después de eso comenzará a truncar dígitos - INT_MAX para un entero de complemento de 32 bits 2 es 2147483647 que como más de 3 dígitos (uno de los cuatro se toma con ''\ 0 '') – JeremyP
@JeremyP Veo a qué te refieres, gracias. – karlphillip
En C puro lo haría así:
char** makeStrArr(const int* vals, const int nelems)
{
char** strarr = (char**)malloc(sizeof(char*) * nelems);
int i;
char buf[128];
for (i = 0; i < nelems; i++)
{
strarr[i] = (char*)malloc(sprintf(buf, "%d", vals[i]) + 1);
strcpy(strarr[i], buf);
}
return strarr;
}
void freeStrArr(char** strarr, int nelems)
{
int i = 0;
for (i = 0; i < nelems; i++) {
free(strarr[i]);
}
free(strarr);
}
void iarrtostrarrinc()
{
int i_array[] = { 65, 66, 67, 68, 69 };
char** strarr = makeStrArr(i_array, 5);
int i;
for (i = 0; i < 5; i++) {
printf("%s\n", strarr[i]);
}
freeStrArr(strarr, 5);
}
Un malloc-cast no es 'C puro', es C++. – user411313
- 1. ¿Convertir una matriz de caracteres a una sola int?
- 2. ¿Cómo convertir una matriz de bytes a una matriz int?
- 3. Eficiencia: matriz de caracteres frente a matriz int
- 4. Convertir matriz TCHAR en matriz de caracteres
- 5. Convertir una matriz int a una matriz de cadenas
- 6. Convertir cadena a matriz int usando LINQ
- 7. matriz de caracteres a un número int en C
- 8. ¿Convertir int a una matriz de bytes en C?
- 9. Convertir matriz de caracteres a caracteres sin signo *
- 10. Int matriz de bytes a
- 11. Cómo convertir una matriz de bytes en una matriz int?
- 12. Java char matriz a int
- 13. Convertir matriz a Matrix
- 14. Convertir NSString en matriz de caracteres
- 15. ¿Cómo puedo convertir un int a una matriz de bool?
- 16. Convertir matriz de int a Bitmap en Android
- 17. ¿Cómo convertir una matriz de bytes int a little endian?
- 18. matriz JSON convertir a matriz de Javascript
- 19. Convertir matriz de cadena (categoría) a matriz de int de un marco de datos de pandas
- 20. cómo convertir la matriz de caracteres a wchar_t array?
- 21. convertir matriz de cadena a matriz de bytes
- 22. Cómo convertir una matriz int [] a una lista?
- 23. convertir matriz decimal a matriz doble
- 24. Convertir matriz a JSON
- 25. cadena convertir a matriz
- 26. Error al convertir una matriz de bytes a una matriz int en C#
- 27. ¿Cómo convertir una matriz de caracteres a una matriz de cadenas?
- 28. Refactoring Ruby: Conversión de matriz a matriz int
- 29. Python: convertir cadena a matriz de bytes
- 30. Cómo convertir int [] a byte []
¿Qué representa para 1,2,3,4,5? ¿Cuáles son algunas conversiones razonables que está esperando? Por favor agregue un ejemplo a su pregunta. – Aamir
puede usar sprintf – Marii
Es un error tipográfico ... su ejemplo int [5] – Allwyn