『壹』 c語言如何實現字元串按位翻轉
如果所說的是字元串的反轉操作是很方便的,只要使用一個輔助單元就可以實現:
char s[200],i,j,c;
gets(s);
for(j=0;s[j];j++);
for(i=0;i<j;i++,j--)
{c=s[i];s[i]=s[j];s[j]=c;}
puts(s);
『貳』 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);
}
}
『肆』 如何快速將字元串反轉
使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。以上就是我在黑馬程序員學Java的時候老師教給我的,分享給你!很高興您能一直採納我的回答,希望一直為您提供幫助
『伍』 關於51單片機字元串轉換成16進制
首先判斷是數字還是字母,如果是數字,那麼減0x30(0的ASCII),如果是字母,那麼減0x41(A的ASCII),減完後,將兩個數組合起來就可以了,第一個數放高四位,第二個數放低四位。
『陸』 單片機 串口接收的字元串如何轉為字元
樓主你好,樓上兄弟說的太復雜了,
恕我直言 沒看懂你想說明神馬問題,串口接收到的字元串如何轉化成字元,首先字元串是字元的連續儲存方式,那麼
例:
chartemp[4]={A,B,C};這是一個標准字元串
那麼temp[0]=='A';為真
以此類推temp[1] =='B'
temp[3]=='/0';//c語言字元串結尾標示符./0轉義符
如果你想顯示中文那麼 中文是16bit的,雙位元組字元
shorttemp;
temp=sbuf;將第一個數據獲取回來
temp<<=8;將數據左移8位
temp|=sbuf;將第二次的數據帶入進來
可能會我記錯了高低位順序,要是出錯可以反過來即可!
小弟告訴你一個最簡單最實用的辦法 如何把字元中的數字變成變數數據
switch 你會用么 就是開關選擇語句
staticchartemp;//申明一個變數這是個全局靜態變數
temp=sbuf;
switch(temp)
{
case'0':temp=0;break;//break必須要加,否則數據覆蓋
case'1':temp=1;break;
case'2':temp=2;break;
...
}
以此類推 ,這樣你的道的字元串或字元數據則能變成數據,
字元串也只是數組而已 而樓主想要的字元也就是其中的一個元素罷了 可以用指針方式提取 亦可以用數組下標提取!這用的都是ascll碼 但是不需要理解到碼表上
請樓主明察搶答時間 ,樓下請勿復制,祝樓主早日解決程序問題,加油加油
『柒』 用C語言編程序實現逆序輸出字元串怎麼寫程序用什麼單片機
1、首先要判斷這個逆序字元串是變數還是常量
2、如果是變數,那麼就要判斷這個字元串最長的長度,如果最長的長度要遠遠小於4096,那麼一般可以選用任何單片機,如果是常量,也是可以選用任何單片機,但是這個常量要構造的時候就要聲明 const unsigned char str="...";
3、如果這個字元串很長,接近4096,並且是變數,那就要根據這個內存使用量去選擇單片機了
『捌』 如何將單片機中字元串轉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值。
『玖』 C語言反轉字元串怎麼反轉
讀取字元串,瀏覽字元串每一個字元,
如果是空格就輸出空格,
否則就保存當前位置,從當前位置移動到下一個空格或字元尾前,
從當前位置開始反向輸出,直達回到保存的位置
最後輸出回車,結束
//以下是C語言版的,需要的話,可以看看
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define String_MaxSize 10000 //讀入字元串的最大長度
int main()
{
char stringPtr[String_MaxSize]; //保存讀入的字元串
//循環讀取直到文件尾
while(gets(stringPtr))
{
int stringPtr_length = strlen(stringPtr); //字元串的長度
int i;
//循環讀取整段字元串
for(i = 0; i < stringPtr_length; i++)
{
//如果字元為空格
if(stringPtr[i] == ' ')
{
//直接輸出空格
printf(" ");
}
//如果字元非空格
else
{
int tempPos = i; //保存當前i的位置
int j; //代替i進行反向移動
//讀取到下一個空格或字元串尾的前一個位置
while(i < stringPtr_length && stringPtr[i] != ' ')
{
i++;
}
i--;
//輸出單詞
for(j = i; j >= tempPos; j--)
{
putchar(stringPtr[j]);
}
}
}
//輸出回車
printf("\n");
}
//輸出回車
printf("\n");
return 0;
}
『拾』 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 }
程序給你測試通過。