⑴ proteus文本字元串怎麼翻轉
從虛擬的窗口終端輸入一個字元串,做一個字元串的內容反轉,並輸出出來。
例:
輸入abc,輸出cba
int i = 0;
char ch;
char smq[100];
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available()){
smq[i] = ch = Serial.read();
Serial.print(ch);
i++;
}
if(ch == ' '){
Serial.print("\r");
Serial.print("喚襪宏result:");
for(i;i >= 0;i--){
Serial.print(smq[i]);
}
delay(1000000000);
}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
通過好搭輸入字元串後,輸入「空格」和冊結束輸入後,將自動輸出倒敘字元串
⑵ 如何用遞歸的方法將字元串進行反轉
偽代碼:
字元串反轉(字元串s){
if(s的長度大於兆畝1){
純猜配returns的最後一個字元+反轉(s去掉最後一個字元後剩下的部分);
做指}else{
returns;
}
}
⑶ c語言的問題字元串反轉
因為你在dest++時,改變了dest的指向的位置,所以沒有輸出正確的結果。
按照你的程序給你修改了一下,請參考。
1 #include <stdio.h>
2 #include <string.h>
#include <malloc.h> // 注意這里:增加使用malloc的頭文件,消除warning
3 main()
4 {
5 char *a = "abc";
6 char *rever(char *dest,const char *src);
7 char *b = (void *)malloc(strlen(a)+1);
memset(b, 0x00, sizeof(strlen(a)+1)); // 注意這里:對malloc的buf進行初始化
8 printf("%s\n", rever(b,a));
9 }
10 char *rever(char *dest,const char *src)
11 {
12 int n;
char *temp = dest; // 注意這里:用來記錄dest的初始地址
13 for (n = strlen(src)-1;n>=0;dest++,n--)
14 *dest = *(src+n);
15 return temp; // 注意這里:返回dest字元串的首地址
16 }
程序給你測試通過。
⑷ 如何將單片機中字元串轉unicode碼
用MultiByteToWideChar和WideCharToMultiByte可以做到編碼的轉換。MultiByteToWideChar是一個windowsAPI函數,該函數映射一個字元串到一個寬字元(unicode)的字元串。函數原型:intMultiByteToWideChar(UINTCodePage,DWORDdwFlags,LPCSTRlpMultiByteStr,intcchMultiByte,LPWSTRlpWideCharStr,intcchWideChar);參數:CodePage:指定執行轉換的字元集,這個參數可以為系統已安裝或有效的任何字元集所給定的值。你也可以指定其為下面的任意一值:CP_ACP:ANSI字元集;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;CP_SYMBOL:符號字元集(42);CP_THREAD_ACP:當前線程ANSI代碼頁;CP_UTF7:使用UTF-7轉換;CP_UTF8:使用UTF-8轉換。dwFlags:一組位標記用以指出是否未轉換成預作或寬字元(若組合形式存在),是否使用象形文字替代控制字元,以及如何處理無效字元。你可以指定下面是標記常量的組合,含義如下:MB_PRECOMPOSED:通常使用預作字元——就是說,由一個基本字元和一個非空字元組成的字元只有一個單一的字元值。這是預設的轉換選擇。不能與MB_COMPOSITE值一起使用。MB_COMPOSITE:通常使用組合字元——就是說,由一個基本字元和一個非空字元組成的字元分別有不同的字元值。不能與MB_PRECOMPOSED值一起使用。MB_ERR_INVALID_CHARS:如果函數遇到無效的輸入字元,它將運行失敗,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION值。MB_USEGLYPHCHARS:使用象形文字替代控制字元。組合字元由一個基礎字元和一個非空字元構成,每一個都有不同的字元值。每個預作字元都有單一的字元值給基礎/非空字元的組成。在字元è中,e就是基礎字元,而重音符標記就是非空字元。函數的預設動作是轉換成預作的形式。如果預作的形式不存在,函數將嘗試轉換成組合形式。標記MB_PRECOMPOSED和MB_COMPOSITE是互斥的,而標記MB_USEGLYPHCHARS和MB_ERR_INVALID_CHARS則不管其它標記如何都可以設置。lpMultiByteStr:指向將被轉換字元串的字元。cchMultiByte:指定由參數lpMultiByteStr指向的字元串中位元組的個數。如果lpMultiByteStr指定的字元串以空字元終止,可以設置為-1(如果字元串不是以空字元中止,設置為-1可能失敗,可能成功),此參數設置為0函數將失敗。lpWideCharStr:指向接收被轉換字元串的緩沖區。cchWideChar:指定由參數lpWideCharStr指向的緩沖區的寬字元個數。若此值為零,函數返回緩沖區所必需的寬字元數,在這種情況下,lpWideCharStr中的緩沖區不被使用。返回值:如果函數運行成功,並且cchWideChar不為零,返回值是由lpWideCharStr指向的緩沖區中寫入的寬字元數;如果函數運行成功,並且cchWideChar為零,返回值是接收到待轉換字元串的緩沖區所需求的寬字元數大小。如果函數運行失敗,返回值為零。若想獲得錯誤信息,請調用GetLastError函數。它可以返回下面所列錯誤代碼:ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。WideCharToMultiByte,該函數映射一個unicode字元串到一個多位元組字元串。函數原型:intWideCharToMultiByte(UINTCodePage,//指定執行轉換的代碼頁DWORDdwFlags,//允許你進行額外的控制,它會影響使用了讀音符號(比如重音)的字元LPCWSTRlpWideCharStr,//指定要轉換為寬位元組字元串的緩沖區intcchWideChar,//指定由參數lpWideCharStr指向的緩沖區的字元個數LPSTRlpMultiByteStr,//指向接收被轉換字元串的緩沖區intcchMultiByte,//指定由參數lpMultiByteStr指向的緩沖區最大值LPCSTRlpDefaultChar,//遇到一個不能轉換的寬字元,函數便會使用pDefaultChar參數指向的字元LPBOOLpfUsedDefaultChar//至少有一個字元不能轉換為其多位元組形式,函數就會把這個變數設為TRUE);參數:CodePage:指定執行轉換的代碼頁,這個參數可以為系統已安裝或有效的任何代碼頁所給定的值。你也可以指定其為下面的任意一值:CP_ACP:ANSI代碼頁;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;CP_SYMBOL:符號代碼頁(42);CP_THREAD_ACP:當前線程ANSI代碼頁;CP_UTF7:使用UTF-7轉換;CP_UTF8:使用UTF-8轉換返回值:如果函數運行成功,並且cchMultiByte不為零,返回值是由lpMultiByteStr指向的緩沖區中寫入的位元組數;如果函數運行成功,並且cchMultiByte為零,返回值是接收到待轉換字元串的緩沖區所必需的位元組數。如果函數運行失敗,返回值為零。若想獲得錯誤信息,請調用GetLastError函數。它可以返回下面所列錯誤代碼:ERROR_INSUFFICIENT_BJFFER;ERROR_INVALID_FLAGS;ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。注意:指針lpMultiByteStr和lpWideCharStr必須不一樣。如果一樣,函數將失敗,GetLastError將返回ERROR_INVALID_PARAMETER的值。WindowsCE:不支持參數CodePage中的CP_UTF7和CP_UTF8的值,以及參數dwFlags中的WC_NO_BEST_FIT_CHARS值。
⑸ 51單片機,通過串口助手向單片機發送字元串,單片機將字元串逆序發送回計算機,用C語言編程
像這種發送字元串的,需要有一個字元串結束標志,不能用0作為字元串結束標志了!這里以回車作0xd為結束標志!
#include <reg51.h>
typedef unsigned char uint8;
bit flag = 0;
uint8 idata buf[30];
uint8 ct;
void InitUART(void) //串口初始化 9600bps
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void Send(uint8 c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void main(void)
{
char j;
InitUART();
while(1)
{
if(flag) //是否接收到回車 字元串發送完
{
flag = 0;
for(j = ct ; j > 0 ; j--)
{
Send(buf[j-1]);
}
}
}
}
void UARTInterrupt(void) interrupt 4
{
static uint8 i = 0;
if(RI)
{
RI = 0;
buf[i++] = SBUF;
if(SBUF == 0x0d) //接受到回車
{
ct = i-1 ;
flag = 1;
i = 0;
}
}
else
TI = 0;
}
模擬結果
程序作為參考 希望 你自己能理解程序!只有自己掌握了才能很好地用!
⑹ 字元串處理:如何實現字元串的反轉
package string;
public class StringTest3 {
public static void main(String[] args)
{
String s="abcdefg";
String s2="";
char[] cs=s.toCharArray();
for(int i=cs.length-1;i>=0;i--)
{
s2=s2+cs[i];
}
System.out.println("對字元串進行反轉操作後為:"+s2);
StringBuffer sb=new StringBuffer("abcdefg");
StringBuffer sb2=sb.reverse();
System.out.println("對StringBuffer進行反轉操作後為:"+sb2);
}
}
⑺ pic單片機怎麼用戶匯編語言實現位取反
用COMF指令。
例如對於一個自定義的變數TEMP
PIC10、PIC12、PIC16系列單片機用 COMF TEMP,1
PIC18系列單片機用 COMF TEMP,1,0
PIC24、dsPIC系列單片機用 COM TEMP (注意這兩個系列的單片機用的匯編的不是COMF,而是COM)
另外PIC32系列單片機沒用過其匯編,所以沒法說是怎麼寫。
⑻ C語言中如何實現字元串的反轉
#include<stdio.h>
#include<string.h>
string_change(char*p)
{
inti,len;
chartemp;
len=strlen(p);
//printf("%d ",len);
//testprintf("%d ",len);
for(i=0;i<(len/2);i++)
宏敏{
temp=p[i];
做賀p[i]=p[len-1-i];
p[len-1-i]=temp;
}
}
intmain(void)
{
chara[20]純絕派="1234567890";
printf("%s ",a);
string_change(a);
printf("%s ",a);
return0;
}
兩個明顯的誤解:
char* a="12***"; 這樣定義是錯誤的。這樣 a指向字元串常量的指針。而字元串常量是不能改變的。所以停止運行。
c中數組是從0開始編號的。所以字元串最後一個字元是a[len-1];
⑼ c語言如何實現字元串按位翻轉
字元串按位翻燃租轉可以塌世通過對每個字元按位翻轉實現,首先通過指針偏移或數組皮衫兆下標依次取出字元,然後對單個字元做按位非操作,即~
⑽ 編寫函數void reverse_string(char *str),不藉助任何庫函數,實現字元串反轉功能,例如"abcd"變為"dcba".
void reverse_string(char *str)
{
char c;
int i,j;
for(i=0;;i++)
{
if(*(str+i)=='\世舉塌0'搜圓) break;
}
for(j=0;j<答哪i;j++,i--)
{
c= *(str+j);
*(str+j)=*(str+i);
*(str+i)=c;
}
}