C语言学习008:标准错误

  在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误

 1 #include <stdio.h>
 2  
 3  int main(){
 4      float latitude;
 5      float longitude;
 6      char info[80];
 7      int started=0;
 8      puts("data[");
 9      while(scanf("%f,%f,%79[^\n]",&latitude,&longitude,info)==3){
10          if(started){
11              printf(",\n");
12          }
13          else{
14              started=1;
15          }
16          if((latitude<-90.0)||(latitude>90.0)){
17              fprintf(stderr,"Invalid latitude:%f\n",latitude);//fprintf既可以把文件发送到标准输出(stdout),也可以发送到标准错误(stderr)
18              return 2;
19          }
20          if((longitude<-180.0)||(longitude>18.0)){
21              fprintf(stderr,"Invalid longtitude:%f\n",longitude);
22              return 2;
23          }
24          printf("{latitude:%f,longitude:%f,info:'%s'}",latitude,longitude,info);
25      }
26      puts("\n]");
27      return 0;
28  }

  我们可以看到,即使用”>“运算符重定向输出到output.json文件,依然可以在屏幕上看到错误消息;创建标准错误的目的就是为了区分普通输出和错误消息

  还有更厉害的是我们可以用"2>"运算符重定向标准错误

posted @ 2016-04-06 20:56  高效养猪倌  阅读(842)  评论(0编辑  收藏  举报