c语言不可见字符的ascii,转CHAR不可见字符
在計算機中有這個情況有時會讓人不理解,我也是第一次聽說,發現在ASCII表中有很多字符是不可見,這些不可見字符在windows系統中試可以看到的。
計算機中的數據傳輸都是按照最小單位字節數來表示的,如果要用字符表示數字的話,一個數字只表示一個位數,什么意思舉個例子:
char buf 最大表示的數字是127, 如果用字符數組來表示127的話,我們就要用char
buf[100]才能放下127為什么會這樣子,因為在字符中每一個字符數字或字母都是用一個byte來表示的。
字符的3和數字的3是不一樣的,這個都是以ascii值來表示判斷的。
字符中ascii碼值為0到32還有127這些字符是在顯示器上看不見的。
不管是8,16,10
還是字符形式表示一個東西,實際上都是用一個事物只不過是顯示方式不同罷了。
ascii
碼值為9的表示tab鍵制表符的意思,ASCII碼值為10表示為換行
注意在網絡上傳輸的字節流和程序中的字節流是不一樣,一般我們使用ntohl等函數進行轉化。
\a 響鈴(BEL) 007
\b 退格(BS) 008
\f 換頁(FF) 012
\n 換行(LF) 010
\r 回車(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 問號字符 063
\' 單引號字符 039
\" 雙引號字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八進制
\xhh 任意字符 二位十六進制
\a:蜂鳴,響鈴
\b:回退:向后退一格
\f:換頁
\n:換行,光標到下行行首
\r:回車,光標到本行行首
\t:水平制表
\v:垂直制表
\\:反斜杠
\':單引號
\":雙引號
\?:問號
\ddd:三位八進制
\xhh:二位十六進制
\0:空字符(NULL),什么都不做
注:
1,\v垂直制表和\f換頁符對屏幕沒有任何影響,但會影響打印機執行響應操作。
2,\n其實應該叫回車換行。換行只是換一行,不改變光標的橫坐標;回車只是回到行首,不改變光標的縱坐標。
3,\t 光標向前移動四格或八格,可以在編譯器里設置
4,\' 在字符里(即單引號里)使用。在字符串里(即雙引號里)不需要,只要用 ' 即可。
5,\? 其實不必要。只要用 ? 就可以了(在windows VC6 和tc2 中驗證)。
格式控制符參考:
格式輸出字符:printf
使用:向終端輸出若干個類型任意的數據。
形式:printf (格式控制符,輸出列表)
說明:
格式控制符:% 格式說明引導符。
- 指定左對齊輸出。
0 指定空位填零。
m.n 指定輸出域寬度及精度。
l.h 輸出長度的修正。
格式字符 指定輸出的數據類型。
說明:
格式字符:指定輸出項的數據類型和輸出格式。
d 有符號十進制整數。
o 無符號八進制數。
x
無符號十六進制數。(小寫的x格式中用小寫字母a,b,c,d,e,f來表示10到15之間的數,大寫的X則用大寫的ABCDEF來表示10到15之間的數)
u 不帶符號的十進制整數。
基本整型:兩個字節,十六個bit(位)
11 11 11 11 11 11 11 11 等于 65535.
11 11 11 11 11 11 11 10 等于 -2.
負數的第一位(符號位)為1。負數的補碼怎么得到:原碼取反加一。2的二進制數為:00 00 00 00 00 00 00
10,取反就等于11 11 11 11 11 11 11 01,然后加1,二進制數逢二進一,所以就得出-2 的二進制代碼。
有符號的整型數可以用 %d 輸出。
無符號的整型數可以用 %u 輸出。
電腦里存的數字都是二進制數,最高位是符號位還是數據位,可以由輸出格式符來控制。
二進制數轉換八進制數:三個 1 對應一個 7 。
二進制數鏨十六進制數:四位二進制對應一位十六進制,四個1 對應一個 f。
說明:
格式字符:c 輸出一個字符。
s 輸出一個字符串。
e 以指數形式輸出實型數。
f 以小數形式輸出實型數。
g 自動決定輸出格式為e和f中較短的一種,不打印無效的零。
% 輸出%。
注意:對于單精度數,使用 %f 格式符輸出時,僅前7位是有效數字,小數6位。
對于雙精度數,使用 %lf 格式符輸出時,前16位是有效數字,小數6位。
長度修正符
l:對整型指定長整型long
例:%ld , %lx , %lo , %lu
對實型指定雙精度double
例:%lf
h:只用于整型的格式字符修正為short
例:%hd , %hx , %ho , %hu
對64位整數的輸入輸出,在POJ上的C++環境下(即VC++),64位整數是:
__int64
輸入輸出格式為”%I64d”.
在G++環境下, 64位整數是
long long
輸入輸出格式為”%lld”.
域寬及精度的描述
M:域寬,即對應的輸出項在輸出設備上所占字符數
若:實際數據寬度>M,按實際數據寬度輸出。
實際數據寬度
N:精度,說明輸出的實型數的小數位數。
幾點說明:
編譯程序只是檢查printf
函數的調用形式,不分析格式控制字符串,如果格式字符與輸出項的類型不匹配,不進行類型轉換。(輸出的數為隨機)
格式字符要用小寫字母。
格式控制字符串中可以包含轉義字符。
格式控制字符串中的普通字符則原樣輸出。
輸出項的參數除了常數、變量外還可以是表達式、函數調用。
%g,%f和%e這三個格式用于打印浮點值。
%g格式用于打印那些不需要按列對齊的浮點數特別有用。其作用有二:
一,去掉該數尾多余的零(沒有達到六位的數)
二,保留六位有效數字(多余六位的)
%e格式用于打印浮點數時,一律顯示地使用指數形式:例如:輸出圓周率時是:3.141593e+00
兩者的區別:
%g格式打印出的數是總共6位有效數字
%e格式打印出小數點后的6位有效數字
%f禁止使用指數形式來表示浮點數。因此圓周率輸出為:3.141593
(但注意它的精度要求:也是小數點后6位有效數字)
(8)%%格式用于打印一個%字符。
(9)%E和%G只是在輸出時用大寫字母(E)代替了小寫字母(e)
輸出正負號的技巧,例如:
printf("%+d %+d %+d\n",-5,0,5);
只要在中間加個“+”號就行。作用是輸出符號位(即,數的正負號)
如果不希望正數的前面出現‘+’號,可用下面的方法
只要在中間加個“ ”號(即:空格)就行。例如:
作用:如果一個數是非負數,就在它的前面插入一個空格。
int i;
for(i=-3;i<=3;i++)
printf("% d\n",i); //注意%和d之間有一個空格
sscanf()的使用技巧:
分解字符串,很多功能都需要正則表達式的知識,所以就介紹一下最簡單的幾種用sscanf來分解字符串 的用法。
1.
char str[100],str1[100],str2[100];
gets(str);
sscanf(str,”%s%s”,str1,str2);
將讀入的一整行字符串按空格,制表符或回車符分割成兩個字符串。
2
取指定長度的字符串。如在下例中,取最大長度為4字節的字符串。
sscanf("123456 ", "%4s", str);
總結
以上是生活随笔為你收集整理的c语言不可见字符的ascii,转CHAR不可见字符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言源程序由将其转换为目标程序,将C语
- 下一篇: 用c语言编程序输入一个正整数,编写一个程