程序如下:
int fd = open(filename,O_RDONLY);
char c;
read(fd,&c,1);
printf("c:%d ",atoi(&c));
看上去好像没什么问题,但结果却大大的有问题。
例如:建立文件 echo 1 > test.data
运行程序之后打印出来的有时候c是1 ,有时候却是是10.
神奇吧?
原因:因为atoi的参数是这个指针,如果c后面的地址是“\n”或非数字的东西就什么问题都没有,如果是数字就会出现想不到的结果。
验证以下
int fd = open(filename,O_RDONLY);
char c[2];
read(fd,c,1);
c[1]='2';
printf("c:%d ",atoi(c));
主要打印出来的数据就是12.
要保证结果正确,只需要把才c[1]='\n'即可,当然不赋值也行,因为默认就是这个