標籤:
在寫程式時,有時候編譯器需要程式必須是英文輸入,但大家經常切到中文或者直接複製網路上的原始碼,所以就出現了
et_ip.c:28:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:28:1: 錯誤: 程式中有游離的‘\240’
get_ip.c:28:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:28:1: 錯誤: 程式中有游離的‘\240’
get_ip.c:32:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:32:1: 錯誤: 程式中有游離的‘\240’
get_ip.c:36:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:36:1: 錯誤: 程式中有游離的‘\240’
這一般是“”,“”、,、;等符號使用錯誤,有時甚至是空格。
怎麼解決呢?
很簡單就是把他們一一改正,但很多不容易找怎麼辦?
解決方案:
可以使用linux 下的od命令加上重新導向:
od詳解:
Linux指令:od
od命令
使用者通常使用od命令查看特殊格式的檔案內容。通過指定該命令的不同選項可以以十進位、八進位、十六進位和ASCII碼來顯示檔案。
文法:od [選項] 檔案…
命令中各選項的含義:
- A 指定地址基數,包括:
d 十進位
o 八進位(系統預設值)
x 十六進位
n 不列印位移值
- t 指定資料的顯示格式,主要的參數有:
c ASCII字元或反斜線序列
d 有符號十進位數
f 浮點數
o 八進位(系統預設值為02)
u 無符號十進位數
x 十六進位數
除了選項c以外的其他選項後面都可以跟一個十進位數n,指定每個顯示值所包含的位元組數。
說明:od命令系統預設的顯示方式是八進位,這也是該命令的名稱由來(Octal
Dump)。但這不是最有用的顯示方式,用ASCII碼和十六進位組合的方式能提供更有價值的資訊輸出。
例如:
[email protected]:~/test$ gcc get_ip.c -o get_ip
get_ip.c: 在函數‘main’中:
get_ip.c:32:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:32:1: 錯誤: 程式中有游離的‘\240’
get_ip.c:36:1: 錯誤: 程式中有游離的‘\302’
get_ip.c:36:1: 錯誤: 程式中有游離的‘\240’
2.我們在終端中用 od -c get_ip.c > log.txt 命令將get_ip.c的內容已以 ASCII字元或反斜線序列 輸出到log.txt 中
3.查看log.txt內容
0000000 # i n c l u d e < s t d l i b 0000020 . h > \n # i n c l u d e < s t 0000040 r i n g . h > \n # i n c l u d e 0000060 < s y s / s o c k e t . h > \n 0000100 # i n c l u d e < s y s / i o 0000120 c t l . h > \n # i n c l u d e 0000140 < n e t / i f . h > \n # i n c l 0000160 u d e < s t d i o . h > \n # i 0000200 n c l u d e < n e t i n e t / 0000220 i n . h > \n # i n c l u d e < 0000240 a r p a / i n e t . h > \n \n i n 0000260 t 302 240 m a i n ( ) \n { \n i n t 302 0000300 240 i = 0 ; \n i n t 302 240 s o c k f 0000320 d ; \n s t r u c t 302 240 i f c o n 0000340 f i f c o n f ; \n u n s i g n 0000360 e d 302 240 c h a r 302 240 b u f [ 5 1 0000400 2 ] ; \n s t r u c t 302 240 i f r e 0000420 q * i f r e q ; \n / / 345 210 235 345 0000440 247 213 345 214 226 i f c o n f \n i f c o 0000460 n f . i f c _ l e n = 5 1 2 ; 0000500 \n i f c o n f . i f c _ b u f 0000520 = b u f ; \n i f 302 240 ( ( s o c 0000540 k f d = s o c k e t ( A F _ 0000560 I N E T , S O C K _ D G R A M , 0000600 0 ) ) < 0 ) \n { \n p e r r o r ( 0000620 " s o c k e t " ) ; \n e x i t ( 0000640 1 ) ; \n } \n i o c t l ( s o c k 0000660 f d , S I O C G I F C O N F , & 0000700 i f c o n f ) ; 302 240 / / 350 216 267 345 0000720 217 226 346 211 200 346 234 211 346 216 245 345 217 243 344 277 0000740 241 346 201 257 \n / / 346 216 245 344 270 213 346 235 245 0000760 344 270 200 344 270 252 344 270 200 344 270 252 347 232 204 350 0001000 216 267 345 217 226 I P 345 234 260 345 235 200 \n i f 0001020 r e q = ( s t r u c t 302 240 i f r 0001040 e q * ) b u f ; \n f o r 302 240 ( i 0001060 = ( i f c o n f . i f c _ l e n 0001100 / s i z e o f 302 240 ( s t r u c t 0001120 302 240 i f r e q ) ) ; i > 0 ; 0001140 i - - ) \n { \n / / i f ( i f r 0001160 e q - > i f r _ f l a g s = = 0001200 A F _ I N E T ) { / / f o r 0001220 i p v 4 \n p r i n t f ( " n a 0001240 m e = % s \ n " , i f r 0001260 e q - > i f r _ n a m e ) ; \n p 0001300 r i n t f ( " l o c a l a d d 0001320 r = % s \ n " , i n e t _ 0001340 n t o a ( ( ( s t r u c t 302 240 s 0001360 o c k a d d r _ i n * ) & ( i f 0001400 r e q - > i f r _ a d d r ) ) - 0001420 > s i n _ a d d r ) ) ; \n i f r 0001440 e q + + ; \n / / } \n } \n r e t 0001460 u r n 302 240 0 ; \n } \n \n 0001473
錯誤: 程式中有游離的‘\302’ ‘\240’等