c基础总结

时间:2023-12-15 13:05:38

机器大小端判断:

 #include <stdio.h>

 typedef union{
char x;
int i;
}un; int main()
{
un tt;
tt.i = ; if(tt.x == )
{
printf("little-endian !\n");
}
else
{
printf("big-endian !\n");
}
printf("tt.x = %d\n", tt.x);
return ;
}

实现atoi() , itoa()

 #include <stdio.h>

 int my_atoi(char *s)
{
int sign = , num = ;
switch(*s)
{
case '-':
sign = -;
s++;
break;
case '+':
s++;
break;
default:
break;
} while((*s)!='\0')
{
num = num* + (*s-'');
s++;
} return num*sign;
}
void itoa(int value, char *str)
{
int i, j;
char tmp = ;
if(value<)
{
str[] = '-';
value = -value;
} //在这里已经被逆序了;
for(i=;value>;i++,value/=)
{
str[i] = value% + '';
}
//数组再逆序一次
for(j=i,i=;i<=j/;i++)
{
     str[i] = str[i]+str[j-i];
     str[j-i] = str[i]-str[j-i];
     str[i] = str[i] - str[j-i];
/*
tmp = str[i];
str[i] = str[j-i];
str[j-i] = tmp;
   */ }
/*
for(j=i-1,i=1; j-i>=1; j--,i++) //将数字字符反序存放
{
str[i] = str[i]^str[j];
str[j] = str[i]^str[j];
str[i] = str[i]^str[j];
}
*/
if(str[] != '-') //如果不是负数,则需要把数字字符下标左移一位,即减1
{
for(i=; str[i+]!='\0'; i++)
str[i] = str[i+];
str[i] = '\0';
} } void main()
{
int value = -;
char str[] = {'\0'}; //记得把str全填充为'\0' itoa(value, str);
printf("The result is:%s\n", str);
}