1. Kurze Einführung
In der C-Sprache gibt es für die Konvertierung zwischen Ganzzahlen und Zeichenketten weit verbreitete Erweiterungsfunktionen (Nicht-Standard-Bibliothek), und Sie können auch einfache Implementierungen selbst ausprobieren.
2. Integer zu String
1. Erweiterungsfunktion itoa
itoa (bedeutet Ganzzahl zu alphanumerisch) ist eine Funktion, die eine Ganzzahl in eine Zeichenkette umwandelt.
In der Windows-Umgebung, in der Header-Datei <stdlib.h>:
char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。
Funktionsquellcode:
char* itoa(int num,char* str,int radix)
{
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum;
int i=0,j,k;
if(radix==10&&num<0)
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;
do
{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
if(str[0]=='-') k=1;
else k=0;
char temp;
for(j=k;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}
Beispielprogramm:
Beispiel
#include <stdlib.h>
#include <stdio.h>
int main()
{
int number1 = 123456;
int number2 = -123456;
char string[16] = {0};
itoa(number1,string,10);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number1,string);
itoa(number2,string,10);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number2,string);
return 0;
}
Screenshot des Effekts:

2. Einfache Implementierung selbst vornehmen
Implementierungscode:
Beispiel
#include <stdio.h>
char* Int2String(int num,char *str);
int main()
{
int number1 = 123456;
int number2 = -123456;
char string[16] = {0};
Int2String(number1,string);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number1,string);
Int2String(number2,string);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number2,string);
return 0;
}
char* Int2String(int num,char *str)
{
int i = 0;
if(num<0)
{
num = -num;
str[i++] = '-';
}
do
{
str[i++] = num%10+48;
num /= 10;
}while(num);
str[i] = '\0';
int j = 0;
if(str[0]=='-')
{
j = 1;
++i;
}
for(;j<i/2;j++)
{
str[j] = str[j] + str[i-1-j];
str[i-1-j] = str[j] - str[i-1-j];
str[j] = str[j] - str[i-1-j];
}
return str;
}
Screenshot des Effekts:
3. Zeichenkette zu Ganzzahl
1. Erweiterungsfunktion
atoi (bedeutet alphanumerisch zu Ganzzahl) ist eine Funktion, die eine Zeichenkette in eine Ganzzahl umwandelt.
In der Windows-Umgebung, in der Header-Datei <stdlib.h>.
int atoi(const char *nptr); // Funktion zur Umwandlung von Zeichenkette in Ganzzahl, nptr: die umzuwandelnde Zeichenkette
Funktionsquellcode
int atoi(const char *nptr)
{
return (int)atol(nptr);
}
long atol(const char *nptr)
{
int c;
long total;
int sign;
while ( isspace((int)(unsigned char)*nptr) )
++nptr;
c = (int)(unsigned char)*nptr++;
sign = c;
if (c == '-' || c == '+')
c = (int)(unsigned char)*nptr++;
total = 0;
while (isdigit(c)) {
total = 10 * total + (c - '0');
c = (int)(unsigned char)*nptr++;
}
if (sign == '-')
return -total;
else
return total;
}
Beispielprogramm:
Beispiel
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("String\"123456\"In eine Zahl umwandeln: %d\n",atoi("123456"));
printf("String\"-123456\"In eine Zahl umwandeln: %d\n",atoi("-123456"));
return 0;
}

2. Einfache Implementierung selbst vornehmen
Quellcode der Implementierung:
Beispiel
#include<stdio.h>
int String2Int(char *str);
int main()
{
printf("String\"123456\"In eine Zahl umwandeln: %d\n",String2Int("123456"));
printf("String\"-123456\"In Zahl umwandeln: %d\n",String2Int("-123456"));
return 0;
}
int String2Int(char *str)
{
char flag = '+';
long res = 0;
if(*str=='-')
{
++str;
flag = '-';
}
while(*str>=48 && *str<=57)
{
res = 10*res+ *str++-48;
}
if(flag == '-')
{
res = -res;
}
return (int)res;
}
Bildschirmfoto:

4. Verwendung der Funktionen sprintf() und sscanf()
Ganzzahl in Zeichenkette
Testcode:
Beispiel
#include <stdio.h>
char* Int2String(int num,char *str);
int main()
{
int number1 = 123456;
int number2 = -123456;
char string[16] = {0};
Int2String(number1,string);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number1,string);
Int2String(number2,string);
printf("Zahl: %d, konvertierte Zeichenkette: %s\n",number2,string);
return 0;
}
char* Int2String(int num,char *str)
{
sprintf(str, "%d", num);
return str;
}
Ausführungsergebnis:

Zeichenkette in Ganzzahl
Testcode:
Beispiel
#include<stdio.h>
int String2Int(char *str);
int main()
{
printf("String\"123456\"In eine Zahl umwandeln: %d\n",String2Int("123456"));
printf("String\"-123456\"In Zahl umwandeln: %d\n",String2Int("-123456"));
return 0;
}
int String2Int(char *str)
{
char flag = '+';
long res = 0;
if(*str=='-')
{
++str;
flag = '-';
}
sscanf(str, "%ld", &res);
if(flag == '-')
{
res = -res;
}
return (int)res;
}
Ausführungsergebnis:

5. Anhang: ASCII-Codetabelle (teilweise)

Autor: Genven_Liang
Originalartikel: https://blog.csdn.net/nanfeibuyi/article/details/80811498