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>"运算符重定向标准错误