Conversia simplă int în char[] (Programare, C, Codificarea Caracterelor)

Punct intermediar a intrebat.

Am o întrebare simplă

Cum se poate converti simplu integer (obținând valorile 0-8) în char, de exemplu char[2] în C?

Mulțumesc

Comentarii

  • De ce aveți nevoie de 2 char? Vă rog să dați un exemplu de intrare și ieșire corespunzătoare. –  > Por Oliver Charlesworth.
  • Nu înțeleg de ce aveți nevoie de . – user319824
5 răspunsuri
Yoko Zunna
main()
{
  int i = 247593;
  char str[10];

  sprintf(str, "%d", i);
// Now str contains the integer as characters
}

Sper că vă va fi de ajutor.

Comentarii

  • Utilizați întotdeauna snprintf sau snprintf_s și treceți dimensiunea bufferului pentru a evita depășirile de buffer și eventualele probleme de securitate, chiar și pentru cele mai simple cazuri ca acesta. Utilizarea sprintf reprezintă o problemă de securitate, cu excepția cazului în care cunoașteți dimensiunea ieșirii în prealabil. –  > Por aberaud.
Prashant
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>
void main()
{
int a = 543210 ;
char arr[10] ="" ;

itoa(a,arr,10) ;   // itoa() is a function of stdlib.h file that convert integer 
                   // int to array itoa( integer, targated array, base u want to             
                   //convert like decimal have 10 

for( int i= 0 ; i < strlen(arr); i++)   //  strlen()   function in string file thar return string length
  printf("%c",arr[i]);

}

Comentarii

  • În timp ce itoa este foarte ușor de utilizat și este suportat de multe compilatoare, se pare că nu este definit în ANSI-C, după cum se menționează aici. –  > Por Samuel Li.
Erik

Folosiți acest lucru. Aveți grijă la i mai mari de 9, deoarece acestea vor necesita o matrice char cu mai mult de 2 elemente pentru a evita o depășire a bufferului.

char c[2];
int i=1;
sprintf(c, "%d", i);

ChrisJ

Dacă doriți să convertiți un int care se află în intervalul 0-9 într-un char, de obicei puteți scrie ceva de genul acesta:

int x;
char c = '0' + x;

Acum, dacă doriți un șir de caractere, trebuie doar să adăugați un caracter terminator „”:

char s[] = {'0' + x, ''};

Rețineți că:

  1. Trebuie să vă asigurați că int se află în intervalul 0-9, în caz contrar nu se va reuși,
  2. Funcționează numai dacă codurile de caractere pentru cifre sunt consecutive. Acest lucru este valabil în marea majoritate a sistemelor care se bazează pe ASCII, dar nu este garantat în toate cazurile.

Comentarii

  • De fapt, standardul C garantează că reprezentările de '0' la '9' sunt consecutive și ascendente. –  > Por Oliver Charlesworth.
xanatos

Nu poți face cu adevărat acest lucru în C „standard”, deoarece dimensiunea unui int și a unui char nu sunt fixe. Să presupunem că folosiți un compilator sub Windows sau Linux pe un PC intel…

int i = 5;
char a = ((char*)&i)[0];
char b = ((char*)&i)[1];

Nu uitați de endianitatea mașinii dumneavoastră! Și că int au „în mod normal” 32 de biți, deci 4 caractere!

Dar probabil că ați vrut să spuneți „vreau să înșirui un număr”, așa că ignorați acest răspuns 🙂