2020-11-13整數轉換為字串 字元反轉

suk732001發表於2020-11-13

在使用WIFI 中需要把一些資訊傳送到手機 端檢視 ,這是有個APP 上看得,字元好處理,而數字就必須轉換為字元才可以傳送看,原來是直接 +‘0’ 或 - ‘0’ 這樣轉換為字元來 後來我就想使用庫函式看看效果
可在微控制器上使用庫函式 是由 報錯的
就從網上找了一下 ,下面這個確實可以使用
我想說的是 這個很有意思
特別是 字元反轉很有技巧
首先2個指標都 指向一個字串
1指向字串首字母
2指向字串尾字母
這個通過
while(*q)
++q; 來實現
當p 不等於 0 的時候
++q
q 是一致向字元 或向字串後面
比如
q[10] = {ABCDEFG};
q 最後是指向 G後面的那個 ‘\0’ 也就是最後的回車 符號
接下來是

–q指向字串最後一個字元
這樣 q – 就是從後面到前面的順序通過
while(q>p)
//也就是 q 的指向大於p
就執行下面的交換字元
而這個最大的好處是對 s 來修改的
為什麼因為 pq都是指標指向 字串 s 的
所以是直接對字串s 來進行修改的
通過
{ temp = *p;
//temp = p[0]
*p++ = *q; //q–ºóÖ¸Ïò µÄ ¸ø *p
// *p++ = p[0] = *q
//p [1]
*q-- = temp; //temp ¸ø *p –
//

}

**重點就是通過指標對一個字串修改
**

#include <stdio.h>
#include <stdlib.h>
#include <string.h> //

char *Reverse(char *s)
{
char temp;
char *p = s; //×Ö·û´®Ê××Öĸ
char *q = s; //×Ö·û´®Î²×Öĸ
while(*q) //µÈ´ý q =0
++q;
// printf(“1111111111111%s\r\n”,q); //
q–; //
//printf("%s\r\n",q);
//printf(“2222222%s\r\n”,s);
while(q>p) //
{ temp = *p; //p[0] ¸ø temp
//printf("-----------%s\r\n",p);
*p++ = *q; //q–ºóÖ¸Ïò µÄ ¸ø *p
//printf("-----------%s\r\n",q);
*q-- = temp; //temp ¸ø *p –
//printf("-----------%s\r\n",temp);
}
//printf("-----------%s\r\n",q);
//printf("-----------%s\r\n",p);
//printf("-----------%s\r\n",s);
return s;

}

char *My_Itoa(int n)
{
int i=0,isNegative = 0;
static char s[10];
if((isNegative=n)<0) //Èç¹ûN <0
{ n = -n;} //n = -n;
do{
s[i++] = n%10+‘0’; //s[i++] = 123%10 + ‘0’
n = n/10;
}while(n>0);
if(isNegative<0)
{
s[i++] = ‘-’;
}
s[i] = ‘\0’;
//printf("+++++%s\r\n",s);
return Reverse(s);
//return s;
}

int main()
{
int num =343;
int k = 2442;
int mmm ;
int aaa = 7654;
char str[22];
char s[10];
char sss[30]=“633”;

char *u = My_Itoa(aaa);

itoa(num,str,10); //°ÑÕûÊýת»»Îª×Ö·û´® 
itoa(k,s,10);
strcat(str,s); //½«Á½¸öת»»ºóµÄ×Ö·û´®Á¬½ÓÆðÀ´ 

mmm = atoi(sss);  //½«×Ö·û´®×ª»»ÎªÕûÊý

printf("****%s\r\n",u);

printf("int_char %s\r\n",str);

printf("char_int %d\r\n",mmm);

getchar();

}

相關文章