在写程序时,有时候编译器需要程序必须是英文输入,但大家经常切到中文或者直接复制网络上的源代码,所以就出现了
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 -c hello
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码和十六进制组合的方式能提供更有价值的信息输出。
解决办法:
1.我们在终端使用od -c test.c > log.txt
2.察看log.txt就能找出这写特殊字符了
0000000 # i n c l u d e < s t d l i b
0000020 . h > \n i n t * f u n c ( v o
0000040 i d ) \n { \n 302 240 302 240 i n t *
0000060 x = m a l l o c ( 1 0 *
0000100 s i z e o f ( i n t ) ) ; \n 302 240
0000120 302 240 x [ 1 0 ] = 0 ; 302 240
0000140 / / 351 227 256 351 242 230 1 : 346 225 260 347 273
0000160 204 344 270 213 346 240 207 350 266 212 347 225 214 \n } 302
0000200 240 302 240 302 240 302 240 302 240 302 240 302 240 302 240 302
*
0000240 240 \n 302 240 i n t m a i n ( v o
0000260 i d ) \n { \n 302 240 302 240 i n t *
0000300 x = N U L L ; \n 302 240 302 240 x = f
0000320 u n c ( ) ; \n 302 240 302 240 / / f r
0000340 e e ( x ) ; 302 240 \n 302 240 302 240 x
0000360 = N U L L ; \n 302 240 302 240 r e t u
0000400 r n 0 ; 302 240 302 240 / / 351 227 256 351
0000420 242 230 2 : 345 206 205 345 255 230 346 262 241 346 234
0000440 211 351 207 212 346 224 276 \n 302 240 } \n
0000454