當前位置:首頁 » 編程語言 » c語言字元轉換成字元串格式轉換
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言字元轉換成字元串格式轉換

發布時間: 2022-08-29 03:20:18

⑴ 簡單c語言字元串格式轉換--------------------------

#include<stdio.h>
intmain()
{chart[]="123456.00";
inti;
for(i=0;i<6;i++)
if(i%2&&i<5)printf("%c:",t[i]);
elseprintf("%c",t[i]);
return0;
}

⑵ C語言中十六進制字元數組轉化為字元串

#include <stdio.h>

unsigned char s_des[100] = {0};

int length = 9;

unsigned char s_src[length] = {0xFE,0x01,0x52,0xFF,0xEF,0xBA,0x35,0x90,0xFA};

unsigned char IntToHexChar(unsigned char c)

{

if (c > 9)

return (c + 55);

else

return (c + 0x30);

}

int main()

{

unsigned char temp;

int i;

for (i=0; i<length; i++)

{

temp = s_src[i]&0xf0;

s_des[2*i] = IntToHexChar(temp >> 4);

temp = s_src[i]&0x0f;

s_des[2*i+1] = IntToHexChar(temp);

}

printf("*** %s *** ",s_des);

return 0;

}

(2)c語言字元轉換成字元串格式轉換擴展閱讀:

十六進製表示方式

不同電腦系統、編程語言對於16進制數值有不同的表示方式:

Ada與VHDL用所基於的「數字引證」把16進制數包起來,例如「16#5A3#」。(注:Ada對整數和實數都可以使用從1到16中任何一個做為其基數。)而對於位元組向量,VHDL使用字首x表示,例如,x"10",對應的二進制碼為:"00010000"。

C語言、C++、Shell、Python、Java語言及其他相近的語言使用字首「0x」,例如「0x5A3」。開頭的「0」令解析器更易辨認數,而「x」則代表十六進制(就如「O」代表八進制)。在「0x」中的「x」可以大寫或小寫。對於字元量C語言中則以x+兩位十六進制數的方式表示,如xFF。

十六進制轉義序列:如x1abf4,可以使用任意多的十六進制數字,直至不是十六進制數字為止;

16位的通用字元名(universe-character name):u後面必須跟4個十六進制數字(不足四位前面用零補齊),表示Unicode中在0至0xFFFF之內的碼位(但不能表示0xD800到0xDFFF之內的碼點,Unicode標准規定這個范圍內的碼位保留,不表示字元);

32位的通用字元名:U後面必須跟8個十六進制數字(不足八位前面用零補齊),表示Unicode中所有可能的碼位(除0xD800到0xDFFF之外)。

C++11引進了十六進制浮點型字面常量。例如:0x1.2p10表示(1+2/16)×2=115210。實際上,Visual C++一直以來使用的C/C++語言標准庫函數printf,%a作為類型說明符來格式化輸出浮點型值即為上述格式。例如:printf("%a",1152.0);

C/C++在表示字元型字面常量時,可以用:

在VB、MSX BASIC、Quick BASIC和FreeBASIC中,使用字首「&H」來表示。

在HTML,十六進制字元可以用「x」,例如&#x5a3;和֣效果應該無異。

Intel的匯編語言中用字尾「h」來標識16進位的數(若該數以字母起首,在前面會增加一個「0」)例如「0A3Ch」、「5A3h」

其他匯編器(AT&T、Motorola、6502),Pascal,Delphi和某些BASIC的版本使用字首「$」,例如「$5A3」

亦有用X'5A3'這類表示方式的,如於PL/I,COBOL及JCL中。這亦是IBM裝載早期操作系統的大型機與小型機上最常用的數據格式。

由於表示方式沒有單一、已協定的標准,所以以上的表示方式都有被使用,有時甚至在同一份論文上會出現幾個不同的表示方式。但因為各方式之間沒有太大的分歧,所以即使混合使用也沒有構成問題。

其中最常用(或常見)表示十六進制數值的方式是將'0x'加在數字前,或在數字後加上小字16。例如0x2BAD和2BAD16都是表示十進制的11181(或1118110)。

在網頁設計上十六進制是很常用的。HTML和CSS使用十六進制的表示法來表示網頁上的特定顏色。使用#的符號來表示而非用個別的符號表示十六進制。

24-bit顏色可以用#RRGGBB的格式來表示,RR是顏色中紅色成分的數值,GG是顏色中綠色成分的數值,BB顏色中藍色成分的數值。舉個例子,紅色的陰影是十進制238,9,63可以編成#EE093F。

⑶ C語言轉換格式符大全

int printf(const char *format,[argument]);
format 參數輸出的格式,定義格式為:
%[flags][width][.perc] [F|N|h|l]type
規定數據輸出方式,具體如下:
1.type 含義如下:
d 有符號10進制整數
i 有符號10進制整數
o 有符號8進制整數
u 無符號10進制整數
x 無符號的16進制數字,並以小寫abcdef表示
X 無符號的16進制數字,並以大寫ABCDEF表示
F/f 浮點數
E/e 用科學表示格式的浮點數
g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 G 同g格式,但表示為指數
c 單個字元
s 字元串
% 顯示百分號本身
p 顯示一個指針,near指針表示為:XXXX
far 指針表示為:XXXX:YYYY
n 相連參量應是一個指針,其中存放已寫字元的個數
2.flags 規定輸出格式,取值和含義如下:
無 右對齊,左邊填充0和空格
- 左對齊,右邊填充空格
+ 在數字前增加符號 + 或 -
一個空格 只對負數顯示符號
# 當type=c,s,d,i,u時沒有影響
type=o,x,X時,分別在數值前增加'0',"0x","0X"
type=e,E,f時,總是使用小數點
type=g,G時,除了數值為0外總是顯示小數點 3.width 用於控制顯示數值的寬度,取值和含義如下n(n=1,2,3...) 寬度至少為n位,不夠以空格填充
0n(n=1,2,3...) 寬度至少為n位,不夠左邊以0填充 * 格
式列表中,下一個參數還是width 4.prec 用於控制小數點後面的位數,取值和含義如下:
無 按預設精度顯示
0 當type=d,i,o,u,x時,沒有影響
type=e,E,f時,不顯示小數點
n(n=1,2,3...) 當type=e,E,f時表示的最大小數位數
type=其他,表示顯示的最大寬度 .*
格式列表中,下一個參數還是width
5.F|N|h|l 表示指針是否是遠指針或整數是否是長整數
F 遠指針
n 近指針
h短整數或單精度浮點數
l 長整數或雙精度浮點數
1.一般格式
printf(格式控制,輸出表列)
例如:printf("i=%d,ch=%c\n",i,ch);
說明:
(1)「格式控制」是用雙撇號括起來的字元串,也稱「轉換控制字元串」,它包括兩種信息:
①格式說明:由「%」和格式字元組成,它的作用是將輸出的數據轉換為指定的格式輸出。
②普通字元,即需要原樣輸出的字元。
(2)「輸出表列」是需要輸出的一些數據,可以是表達式
(3)printf函數的一般形式可以表示為
printf(參數1,參數2,……,參數n)
功能是將參數2~參數n按參數1給定的格式輸出
2.格式字元(9種)
(1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:
①%d,按整型數據的實際長度輸出。
②%md,m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。
③%ld(%mld 也可),輸出長整型數據。
例如:long a=123456;
printf("%ld",a);
(2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。
(3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。
(4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。
參見:li4-3.c/*無符號數據的輸出*/
(5)c格式符,用來輸出一個字元。格式:%c,%mc都可。
(6)s格式符,用來輸出一個字元串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。
參見:li4-5.c /*字元串的輸出*/
(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。
注意:單精度實數的有效位數一般為7位,雙精度為16位。
參見:li4-6.c/*輸出單精度實數時的有效位數*/
li4-7.c/*輸出雙精度實數時的有效位數*/
li4-8.c/*輸出實數時指定小數位數*/
(8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。
(9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種)。
3.說明
(1)除了X、E、G(用大寫字母表示)外,其他格式字元必須用小寫字母;
(2)「格式控制」字元串內可以包含轉義字元;
(3)如果想輸出字元「%」,則應該在「格式控制」字元串中用連續兩個%表示,如:
printf("%f%%",1.0/3);
(4)格式字元表參見下表
表4.1 printf格式字元
格式字元 說 明
d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)
o 以八進制無符號形式輸出整數(不輸出前導符0)
x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出
u 以無符號十進制形式輸出整數
c 以字元形式輸出,只輸出一個字元
s 輸出字元串
f 以小數形式輸出單、雙精度數,隱含輸出6位小數
e,E 以指數形式輸出實數
g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0
表4.2 printf的附加格式說明字元
字元
說明
字母l
用於長整型整數,可加在格式符d、o、x、u前面
m(代表一個正整數)
數據最小寬度
n(代表一個正整數)
對實數,表示輸出n位小數;對字元串,表示截取的字元個數
-
輸出的數字或字元在域內向左靠

⑷ C語言中將整形變數轉換成字元串的函數是什麼

int
iValue;//整型數
char
sz[10];//字元串
sprintf(sz,
"%d",
iValue);//這句需要
頭文件
#include
/*或者*/
itoa(iValue,
sz,
10);
//這句需要頭文件#include
sprintf類似於printf,printf比sprintf少第一個參數,就是直接在輸出界面輸出相應的東西,而sprintf就是將你要輸出的東西按相應格式存放到第一個參數的字元串中。
itoa是直接將整型數轉化成字元串

⑸ 弱弱的問一句,C語言能不能實現字元串的編碼格式轉換 GB2312toUTF-8

其實 linux 和 windows 的系統函數都是C函數,並且提供了GB2312toUTF-8的函數,所以C語言是可以實現轉碼的。以下是windows的例子:int num = ::MultiByteToWideChar(CP_ACP, 0, "你好", -1, NULL, 0);wchar_t* m_arrayShort = new wchar_t[num];::MultiByteToWideChar(CP_ACP, 0, "你好", -1, m_arrayShort, num); int len = ::WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, 0, 0, NULL, NULL);char *tmpPT = new char[len+1];::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, tmpPT, len, NULL, NULL);tmpPT[len] = 0;

⑹ 用C語言把連續輸入的ASCII碼轉為字元串

#include"stdio.h"
#include"stdlib.h"
#defineMAX5

voidmain()
{
intdigit[MAX];
intcount=0;
inti;

for(i=0;i<MAX;++i)
scanf("%d",digit+i);

for(i=0;i<MAX;++i)
putchar(digit[i]);
}

另一種方式:
#include"stdio.h"
#include"stdlib.h"
#defineMAX5

voidmain()
{
intdigit[MAX];
char*str;
intcount=0;
inti;

for(i=0;i<MAX;++i)
{
count+=scanf("%d",digit+i);
if(digit[i]==0)break;
}

str=(char*)malloc(count);

for(i=0;i<count;++i)
str[i]=digit[i];

str[count]='';

puts(str);

free(str);
}

⑺ c語言函數與字元串轉化問題 求助大佬

int itoa(long int i, char a[])

{

int t=0,sign=1;

char tt;

if(i<0)

{

sign=-1;

i=-i;

}

do

{

a[t++]='0'+i%10;

}while(i/=10);

if(sign==-1)

{

a[t++]='-';

}

a[t]='';

for(t--,i=0;i<t;i++,t--)

{

tt=a[t];

a[t]=a[i];

a[i]=tt;

}

return 0;

}

⑻ C語言編程完成將一個任意正整數轉換成相應的字元串.用函數

#include<stdio.h>
#defineLEN30
intmain(){
voidtoString(__int64x,char*p);
charstr[LEN];
__int64x;

printf("請輸入要轉換的整數:");
scanf("%I64d",&x);
toString(x,str);
printf("轉換成字元串:%s ",str);
return0;
}
voidtoString(__int64x,char*p){
inti,t,r,l;
//初始化
for(i=0;i<LEN;i++)p[i]='';
//轉換
t=1;
while(t<=x)t*=10;
t/=10;
l=0;//長度
while(x>0){
r=x/t;
p[l++]=r+48;
x%=t;
t/=10;
}
}

⑼ c語言中如何將short,int,long,float這些類型的數值轉換為字元串

這些都是 整數 型的,所以把每一位拿出來放到char數組裡面就好

#include<stdio.h>
#defineLEN20
intmain()
{
inti;
intnum;//要轉換的數字,以int為例
intlen;//存儲該數字有幾位
chartemp[LEN],ans[LEN];
scanf("%d",&num);
len=0;
while(num)//每次取出個位數,直到變成0
{
intgeWei=num%10;//個位數
intch=geWei+'0';//轉換為char型
temp[len]=ch;
len++;
num/=10;
}
for(i=0;i<len;i++)//剛才是倒著存的,現在要倒回來
ans[i]=temp[len-i-1];
ans[len]=0;//字元串最後要加0
printf("%s ",ans);
return0;
}

⑽ c語言用一個函數將一個數字轉換成字元串,大神們看看哪兒錯了。。謝謝了

(1)c語言先寫聲明,後寫語句。
i=(int)n; int k=0; float j; 要寫成 int k=0; float j; i=(int)n;
(2)轉換整數部分你用了: while(i){ str[k]=i%10; i=i/10; k++; }
數字到字元編碼寫錯了,應改為:
while(i){ str[k]=i%10 + '0'; i=i/10; k++; }
得到的字元串結果是反序的,例如: 123.406; 你得到 str[] 里是 "321"。
這時,你要做反序工作:
例如:{ char t; for (i=0;i<k/2;i++) {t=str[i]; str[i]=str[k-i-1]; str[k-i-1]=t;}; }; (你需要驗證一下,這里只是給你建議和提示)
(3)加入小數點字元: str[k]='.'; k++; 計數器k也加1
(4) 接下來做小數部分,注意,如果數字是0也要轉換,
與整數部分同樣,數字到字元編碼 要 加 '0'.
把這句: if(x!=0){ str[k++]= x ; }
改為: str[k++]= x +'0'; 否則 123.406 變 123.46了。
(5) 題目是否要求考慮負數?
若要求,開始轉換前要判斷是否小於0,小於則 str[k]='-'; k++;
另外,#define max 10 位數夠嗎?不夠應加大。
(6) 機器內的浮點數 有時是很長的數,輸入的10進制變2進制,是化不完的。所以你的 if(j==0) break; 未必能做到 !
為何不用 sprintf(str,".....",n); 直接轉換呢? 可用 %g 格式 或別的格式,一步到位?